Django-url配置(分组)

Posted wannengjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django-url配置(分组)相关的知识,希望对你有一定的参考价值。

url配置

无名分组

urlpatterns = [
    url(r‘^index/‘, views.index),
    url(r‘^books/(d{4})/‘, views.books),#无名分组  (d{4})
]
def books(request,year):#这里的year对应的就是(d{4})正则匹配出来的数据
    # print(year)
    return HttpResponse(year)

位置参数

urlpatterns = [
    url(r‘^index/‘, views.index),
    url(r‘^books/(d{4})/(d[1,2])/‘, views.year_month_books),  # 无名分组  匹配年份的
    url(r‘^books/(d{4})/$‘, views.year_books),#无名分组  匹配年份+月份  $符号的作用是防止匹配不到月份,完全匹配的作用


]
视图
    def year_books(request, year):
        return HttpResponse(year)

    def year_month_books(request, year, month):
        return HttpResponse(year + month)
 #位置参数 第一个参数接收的就是无名分组路径中匹配的第一个分组的数据,第二个参数接收的就是无名分组路径中匹配的第二个分组的数据      

有名分组

url(r‘^books/(?P<year>d{4})/(?P<month>d[1,2])/‘, views.year_month_books), 
#视图里面的函数形参名称要和url中的分组名对应好,参数位置没有眼球

注意:

  1. urlpatterns中的元素书写顺序从上往下逐一匹配正则表达式,一旦匹配成功,就不再继续匹配
  2. 如要从URL中捕获一个值,只需要在它周围放置一对圆括号(分组匹配)
  3. 不需要添加一个前导的反斜杠(也就是写在正则前面的那个/),因为每个url都有 例如,应该是artices而不是/artices
  4. 每个正则表达式前面的‘r‘都建议加上
  5. ^artices& 以什么结尾 ,以什么开头,严格限制路径

APPEND_SLASH=False

配置的意思是最后面加/跟不加/的区别,浏览器默认的是True,如果访问的时候不加/,Django会自动加上斜杠再请求一遍,想等于两边请求.如果这个参数改为False,如果请求的时候不加/,则会报错

所以一般在urls中写的时候一般最后加上/

url(r‘^index/‘, views.index),

视图函数添加默认参数

def year_month_books(request, year=‘10‘):
        return HttpResponse(year)

以上是关于Django-url配置(分组)的主要内容,如果未能解决你的问题,请参考以下文章

django-url的分发

Django-url中的空字符串未重定向到索引页面

django-url的分发, 2)起别名, 3)根目录,4)rediect跳转函数:

django-URL实例命名空间

django-URL转换器

django-URL反向解析Reverse