【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\d+)-(?P\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\d{4})/(?P ', views.ymd),\d{2})/(?P \d{2})
form表单提交以post方式提交时,Django会给我们做一个csrf安全监测,暂时不用检测的话 在settings.py 中注释掉即可
给url路由起别名
别名的作用:防止url访问的修改 导致后面维护困难