【Django】路由系统 urls.py
路由系统 urls.py
路由系统基本配置:
from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 参数说明: 一个正则表达式字符串 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 可选的要传递给视图函数的默认参数(字典形式) 一个可选的name参数 可以两个url对应一个views视图函数(注意:逻辑不能乱)
下面是一些基本的URL配置案例:
from django.conf.urls import url from django.contrib import admin from blog import views urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), #url(r'^articles/[0-9]{4}/$', views.year_archive), url(r'^articles/([0-9]{4})/$', views.year_archive), #no_named group //分组之后就是传递给views.py 中对应函数的参数 url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), ]
无名的分组:
#在views.py视图函数中也可以通过 **kwargs接收参数 -------------------------------------------------------------urls.py urlpatterns = [ url(r'^index-(\d+)-(\d+).html/$',views.index) url(r'^index2-(?P<article_id>\d+)-(?P<book_id>\d+).html/$',views.index2) ] --------------------------------------------------------------views.py def index(request,val1,val2): print(request.GET) print('val1--',val1) #按顺序接收url正则中分组传入的值 val1-- 2 print('val2--',val2) #val2-- 3 return HttpResponse("ok") def index2(request,*args,**kwargs): print(request.GET) print('args---',args) #空的 print('kwargs===',kwargs) #kwargs=== {'article_id': '2', 'book_id': '3'} return HttpResponse("good")
有名分组:
url(r'^ymd/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})', views.ymd),
form表单提交以post方式提交时,Django会给我们做一个csrf安全监测,暂时不用检测的话 在settings.py 中注释掉即可
给url路由起别名
别名的作用:防止url访问的修改 导致后面维护困难
路由分发: