Django之路由

 

思维导图   

Django的路由系统

Django的路由系统就是URL调度程序(就是一个Python模块),URL配置(URLconf)就是Django所支撑网站的目录.

它的本质是URL模式(简单正则表达式)与Python函数(视图函数)之间的映射.

 URLconf配置

 基本格式

from django.conf.urls import url

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

参数说明:

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

示例:

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),
]

注意:
Django 2.0版本中的路由系统是下面的写法(官方文档):

from django.urls import path,re_path

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    path('articles/<int:year>/', views.year_archive),
]

2.0版本中re_path和1.11版本的url是一样的用法。

正则表达式详解

基本配置

from django.conf.urls import url
from app01 import views
urlpatterns = [
    url(r'^blog/[0-9]{4}', views.year),
]

url地址:

分组命名分配

 

from django.conf.urls import url
from app01 import views
urlpatterns = [
    url(r'^blog/([0-9]{4})', views.year),
]

结果:

 

所以要在视图函数中加上分组对应的参数:

from django.shortcuts import render,HttpResponse

def year(request,y):
    return HttpResponse('ok')

上面的示例使用简单的正则表达式分组匹配(通过圆括号)来捕获URL中的值,并以位置参数形式传递给视图.

在更高级的用法中,可以使用分组命名匹配的正则表达式来捕获URL中的值,并以关键字参数形式传递给视图.

在Python的正则表达式中,分组命名正则表达式组的语法是(?P<name>pattern),其中name是组的名称,pattern是要匹配的模式.

 

posted @ 2019-03-05 22:00  yara-ning  阅读(101)  评论(0编辑  收藏  举报