学习笔记,仅供参考
参考自:Django打造大型企业官网;
本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写一下。
include函数
在我们的项目变大以后,通常不会把所有的url
匹配规则都放在项目的主urls.py
文件中,而是在每个app
中定义自己的urls.py
文件,这个文件中存储的都是这个app
的所有url
匹配规则。之后,我们需要将所有 app
的urls.py文件统一注册到项目的主urls.py
文件中。
include
函数有多种用法,这里讲下两种常用的用法.
第1种用法
include(module, namespace = None)
#module:子url模块的字符串
#namespace:实例命名空间
示例代码:
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('book/',include("book.urls", namespace = "book1"))
]
- 注意事项
我们可以传递namespace
参数来指定一个实例命名空间,但是在使用实例命名空间之前,必须先指定一个应用命名空间,例如:
# 主urls.py文件:
from django.urls import path,include
urlpatterns = [
path('movie/',include('movie.urls',namespace='movie1'))
]
在movie/urls.py
中指定应用命名空间:
from django.urls import path
from . import views
# 应用命名空间
app_name = 'movie'
urlpatterns = [
path('',views.movie,name='index'),
path('list/',views.movie_list,name='list'),
]
第2种用法(指定应用命名空间)
include((pattern,app_namespace), namespace=None)
#pattern:子url模块的字符串
#app_namespace:应用命名空间
#namespace:实例命名空间
#例子
path('movie/',include('movie.urls', app_namespace='movie'), namespace = "movie1")
第3种用法
include(pattern_list)
#pattern_list:一个列表或者一个元组,表示子url的一个匹配
例子:
from django.contrib import admin
from django.urls import path,include
from movie import views
urlpatterns = [
path('admin/', admin.site.urls),
path('movie/',include([
path('',views.movie),
path('list/',views.movie_list),]))
]