小白学Python – Django Web 开发教程 二

2023-10-26 14:14:31 浏览数 (2)

创建视图函数

  • Python3
代码语言:javascript复制
from django.http import HttpResponse

# 创建一个函数
def geeks_view(request):
	
	return HttpResponse("<h1>Welcome to GeeksforGeeks</h1>")

让我们一次一行地浏览这段代码:

  • 首先,我们从 django.http 模块导入 HttpResponse 类以及 Python 的日期时间库。
  • 接下来,我们定义一个名为 geeks_view 的函数。这就是视图功能。每个视图函数都将 HttpRequest 对象作为其第一个参数,该参数通常名为 request。
  • 该视图返回一个 HttpResponse 对象,其中包含生成的响应。每个视图函数负责返回一个 HttpResponse 对象。

视图类型

Django 视图分为两大类:-

  • 基于函数的视图
  • 基于类的视图

基于函数的视图

基于函数的视图是使用 python 中的函数编写的,该函数接收 HttpRequest 对象作为参数并返回 HttpResponse 对象。基于功能的视图一般分为4种基本策略,即CRUD(Create、Retrieve、Update、Delete)。CRUD 是用于开发的任何框架的基础。 

基于类的视图

基于类的视图提供了另一种将视图实现为 Python 对象而不是函数的方法。它们不会取代基于函数的视图,但与基于函数的视图相比具有一定的差异和优势:

  • 与特定 HTTP 方法(GET、POST 等)相关的代码组织可以通过单独的方法而不是条件分支来解决。
  • 面向对象的技术,例如 mixin(多重继承),可用于将代码分解为可重用的组件。

URL 模式

这是 gfg_site/urls.py 的示例代码:

代码语言:javascript复制
from django.urls import path
from . import views

urlpatterns = [
	path('', views.geeks_view, name='geeks_view'),
]

包括其他 URLConf 模块

为 Django 中的每个应用程序提供一个 URLConf 模块是一个很好的做法。该模块需要包含在根 URLConf 模块中,如下所示:

代码语言:javascript复制
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
	path('admin/', admin.site.urls),
	path('', include('gfg_site_app.urls'))
]

现在,如果访问 http://127.0.0.1:8000/ 那么我们的网站将是 – 

在 Django 管理界面中渲染模型

要在Django admin中渲染模型,我们需要修改 app/admin.py。进入 geeks_site_app 中的 admin.py 并输入以下代码。从models.py中导入对应的模型并注册到管理界面。

代码语言:javascript复制
from django.contrib import admin
from .models import GeeksModel

#在这里注册您的模型。
admin.site.register(GeeksModel,)

现在让我们为我们的项目创建一个可以访问我们网站的管理区域的超级用户。要创建超级用户,请输入以下命令 - 

代码语言:javascript复制
python manager.py createsuperuser

现在在浏览器上访问http://127.0.0.1:8000/admin 访问管理界面面板。 

提供为超级用户创建的用户名和密码,然后管理仪表板将打开,我们将能够看到我们刚刚创建的 Geeks 模型。

现在让我们看看如何使用管理仪表板输入数据。现在点击极客模型我们会看到这样的东西 – 

我们可以点击右上角的“添加极客模型”按钮,然后我们就可以看到用于添加数据的字段。见下图—— 

添加所需的数据和图像字段后,我们将在管理仪表板上看到类似的内容 – 

您还可以在代码编辑器中看到媒体文件夹 -

将 Django 连接到不同的数据库

Django 内置了 SQLite 数据库。我们还可以在 settings.py 文件的 DATABASES 字典中看到这一点。

代码语言:javascript复制
DATABASES = {
	'default': {
		'ENGINE': 'django.db.backends.sqlite3',
		'NAME': BASE_DIR / 'db.sqlite3',
	}
}

如果您想将其更改为另一个数据库,您可以更改上面的字典。假设我们想要将此数据库更改为 PostgreSQL。假设安装了所需的依赖项并设置了 PostgreSQL,那么 DATABASES 字典将如下所示

代码语言:javascript复制
DATABASES = {
'default': {
	'ENGINE': 'django.db.backends.postgresql',
	'NAME': ‘<database_name>’,
	'USER': '<database_username>',
	'PASSWORD': '<password>',
	'HOST': '<database_hostname_or_ip>',
	'PORT': '<database_port>',
}
}

0 人点赞