django include用法
1. 什么是django include
在Django项目中,使用include函数可以将一个URL映射到另一个URL,从
而实现URL重定向和代码重用。include()可以接受一个参数——包含其他
URLconf的模块名(xxx.urls)。此参数必须是字符串,并且不能包含相对点或连字符。这个功能对于分解Django应用程序的URL结构是很有用的。
2. include的用法
通常将子URLconf加入到主URLconf中是最简单的。例如,一个名为polls的
应用可能有下面的URLconf:
from django.urls import path
from . import views
urlpatterns = [
path('latest/', views.index, name='index'),
path('<int:question_id>/', views.detail, name='detail'),
path('<int:question_id>/results/', sults, name='results'),
path('<int:question_id>/vote/', views.vote, name='vote'),
]
在项目的主URLconf中,我们可以把这个应用的URLconf包含进去:
include怎么用
from django.urls import path, include
urlpatterns = [
path('polls/', include('polls.urls')),
...
]
现在,URLconf会将 'polls/' 部分区分为包含 'polls.urls' 的任何东西。
include() 语法也允许其他选项:您可以使用namespace 来指定命名空间。例如:app_name = 'polls'
urlpatterns = [
path('specifics/<int:question_id>/', views.detail, name='detail'),
...
]
然后在您的项目中,在include() 方式中指定namespace parameter:
urlpatterns = [
path('polls/', include('polls.urls', namespace='polls')),
]
当你在你的模板或者代码中想要引用 polls 的特定视图时,你就需要使用命名
空间前缀:
{% url 'polls:detail' question.id %}
3. include的作用
- 一些应用程序可以独立运作,同时也可以作为其他应用程序的一部分。
- DRY原则(Don't Repeat Yourself,不要重复自己)的实现,避免了多次复制添加代码。
- 模块化编程,易于维护、修改和升级。
- 使用namespace来避免命名冲突。
4. 关于include的约定
- 包含其他URLconf时总是使用应用的名称。例如,include('myapp.urls')而不
是include('urls')。
- 不要将namespace和函数名称同名。
#总结
include()是Django框架重要的模块之一,它提供了代码重用的基础。include()
的使用可以使应用程序更清晰明了且具有模块化,同时也方便我们书写和维护代码。在使用include()的过程中,我们还要注意约定和规范,尤其是名称冲突和namespace的使用。