路由的查找流程:
在浏览器输入网址,那么项目下的路由就开始对网址进行匹配。r
匹配网址开始,$
匹配网址结尾,匹配合适,则调用相应的视图函数。
项目路由的作用是分发应用路由,在项目路由里面进行初始匹配,也就是只匹配头部,头部正确,则继续到应用路由去匹配尾部。
其实在模板里面定义的超链接,可以通过应用的命名空间namespace
与路由名name
来规定,直接按着这个查找,相率更高。
1.blog/blog下的urls.py:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('mamengli_blog.urls', namespace='mamengli_blog')),
]
这里是项目下应用总的路由函数集合,include()函数有两个参数:
1.'mamengli_blog.urls
表示具体应用下,路径对应的视图函数集合;
2.namespace='mamengli_blog
,给这个应用的路由集合一个命名空间,方便查看。每个具体的路由,都应该有一个命名name
,方便写超链接,而且改写路由的时候,只需要在urls.py
里面给就行。
2.应用下的路由
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'index/$', views.index, name='index'),
url(r'^category/(?P<category_name_slug>[\w\-]+)/$', views.index, name='page_list'),
]
1.(?P<category_name_slug>[\w\-]+)
是一个变量,变量名为category_name_slug
,在对应的视图函数中,多加一个参数就可以获取这个变量值了(有几个参数,加几个变量)。
那么,这个变量从何取值呢?从模板,从上一个视图函数,模板传值的方式在模板板块里面有讲到。
网友评论