0
点赞
收藏
分享

微信扫一扫

Django从理论到实战(part13)--include函数

学习笔记,仅供参考

参考自: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),]))
]

举报

相关推荐

0 条评论