【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访问的修改 导致后面维护困难

路由分发:

原文地址:https://www.cnblogs.com/XJT2018/p/11299967.html