分享给大家django split views into multiple files。
让我们看看下面的例子,django 中的多个视图。
大多数时候,您可以开发单独的模块来执行视图外的处理工作,导入它们,然后在视图内使用它们的功能。
有时您可以将工作分配给多个应用程序。显然,当它有意义时。但偶尔,观看次数会增加。在这种情况下,您可能希望将视图分成单独的文件。
在这里,我简单地逐步解释了如何在 Django 中创建多个视图的示例。
第 1 步:创建项目
在这一步中,我们将使用 django-admin 创建一个新的 django 项目。返回命令行界面并运行以下命令:
django-admin startproject example
第 2 步:创建应用
现在我们将创建一个名为core的应用程序来存储帖子名称列表。我们故意保持基本的东西。使用Control+c停止本地服务器并使用startapp命令创建这个新应用程序。
python manage.py startapp core
第 3 步:应用程序目录
我们的应用程序目录结构如下所示:
|∙∙core/ |∙∙__init__.py |∙∙admin.py |∙∙migrations/ |∙∙models.py |∙∙tests.py |∙∙urls.py |∙∙views.py
第 4 步:创建视图
在这一步中,我们需要配置四种不同的视图打开core/views.py文件,添加:
core/views.py
from django.shortcuts import render def view_1(request): return render(request, 'view_1.html') def view_2(request): return render(request, 'view_2.html') def view_3(request): return render(request, 'view_3.html') def view_4(request): return render(request, 'view_4.html')
第 5 步:创建 URL
在此步骤中,我们需要配置四个不同的 url 使用文本编辑器创建 core/urls.py 并粘贴以下代码。
core/urls.py
from django.urls import re_path import .views urlpatterns = [ re_path(r'^aaa$', views.view_1, name='view_1'), re_path(r'^bbb$', views.view_2, name='view_2'), re_path(r'^ccc$', views.view_3, name='view_3'), re_path(r'^ddd$', views.view_4, name='view_4'), ]
第 6 步:拆分视图
如果您正在修改代码库,这种方法很好。您不必以这种方式改变您管理urls.py的方式。视图函数仍然可以通过views.view_a a 访问,即使它们位于单独的文件中。
删除views.py文件并创建一个名为 views 的目录。在其中添加一个__init__.py文件并创建分离的视图文件。
|∙∙core/ |∙∙__init__.py |∙∙admin.py |∙∙migrations/ |∙∙models.py |∙∙tests.py |∙∙urls.py |∙∙views/ |∙∙__init__.py |∙∙one.py |∙∙two.py
views/__init__.py
导入包含在每个视图文件中的每个模块是关键的一步。
from .one import * from .two import *
views/one.py
from django.shortcuts import render def view_a(request): return render(request, 'view_1.html') def view_b(request): return render(request, 'view_2.html')
views/two.py
from django.shortcuts import render def view_c(request): return render(request, 'view_3.html') def view_d(request): return render(request, 'view_4.html')
这方面无需更改;您可以直接从各种文件导入视图。视图函数的位置实际上与 Django 无关。同样,名称 views 不是必需的,但建议使用。
在下面的示例中,您可以将views/__init__.py保持为空,因为我们直接导入视图。
from django.urls import re_path from .views import one from .views import two urlpatterns = [ re_path(r'^aaa$', one.view_1, name='view_1'), re_path(r'^bbb$', one.view_2, name='view_2'), re_path(r'^ccc$', two.view_3, name='view_3'), re_path(r'^ddd$', two.view_4, name='view_4'), ]
我希望它能帮助你……