Django路由

一、路由基本格式

from django.conf.urls import url

urlpatterns = [
     url(正则表达式, views视图,参数,别名),
]

参数说明:

  • 正则表达式:一个正则表达式字符串
  • views视图:一个可调用对象,通常为一个视图函数
  • 参数:可选的要传递给视图函数的默认参数(字典形式)
  • 别名:一个可选的name参数

二、获取url中的值

from django.conf.urls import url

from . 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})/([0-9]{2})/$', views.month_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]

  加上括号即可获取值,注意在接受的view方法添加接收参数

三、URL命名与反向解析

  1、命名

    url(r'^pre/$', views.press_list,name='press_list'),

    分组:

    url(r'^home/([0-9]{4})/([0-9]{2})/$', views.home,name='home'),

    命名分组

     url(r'^home/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.home,name='home'),

  2、反向解析

     (1)在视图中应用 

      from django.urls import reverse
      reverse('press_list') ——》 '/press_list/'

      分组:reverse('home',args=('2008','09'))    ——》'/app01/home/2008/09/'

      命名分组:

      reverse('home',args=('2008','09')) ——》'/app01/home/2008/09/'
      reverse('home',kwargs={'year':'2018','month':'10'})

     (2)在模板中应用    

      {% url 'press_list' %} ——》 '/press_list/' '/pre/'

      分组:
      {% url 'home' '2009' '10' %} ——》'/app01/home/2008/10/'
      命名分组:
      {% url 'home' '2008' '10' %} ——》'/app01/home/2008/10/'
      {% url 'home' month='10' year='2018' %} ——》'/app01/home/2018/10/'

  3、namespace

      url(r'app02/', include('app02.urls',namespace='app02')),
      url(r'app01/',include('app01.urls',namespace='app01')),

      reverse('app01:home',kwargs={'year':'2018','month':'10'})
      reverse('app02:home',kwargs={'year':'2018','month':'10'})


      {% url 'app02:home' '2018' '10' %}

原文地址:https://www.cnblogs.com/wszxdzd/p/9768931.html