django2.x版本 url配置

Posted hanwenlin

tags:

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

1、导入模块

from django.urls import path, include, re_path

 

路由系统过程:

1)网页输入网址,提交请求

2)找到settings.py中的Root_URLCONF, 进入路由系统中按照顺序找匹配的

3)找到了,就调用与该匹配的url映射的视图函数,并传递参数request以及其它  HttpRequest对象request

4)视图函数处理,返回HttpResponse给浏览器展示(浏览器解析网页)

5)没有找到匹配的url就报错

 

2、一般静态配置  article/2017/

path(route,views.函数名,函数的参数,该url模式的别名)

urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘hello/‘,views.hello), # 前面版本中表示空的是 ‘^$‘,新版本直接 ‘‘ 末尾/一定要,hello不行,一定是hello/
path(‘time/‘,views.current_time),
]


3、动态配置   <类型:变量名>,articles/<int:year>/

path(‘article/<int:year>/‘,views.book)

变量名作为参数传递给视图函数;类型有int, str,slug, Uuid, path

 

4、正则匹配   re_path()    (?p<year>[0-9]{4})  

使用re_path()函数;表达的全部是str格式,不能是其他类型。

两种形式:不提取参数,比如re_path(articles/([0-9]{4}/,表示四位数字,每一个数字都是0到9的任意数字;提取参数,命名形式(?P<name>pattern),比如re_path(articles/(?P<year>[0-9]{4})/,将正则表达式提取的四位数字,每一个数字都是0到9的任意数字命名为year,

 

 

5、include用法

可以减少重复的匹配,

Urlpatterns = [

path(‘<page_slug>-<page_id>/’,include([

path(‘history/’,views.history),

path(‘edit/’,views.edit),

])]

 

还可以实现url的映射分发

from django.urls import path,include

urlpatterns = [

path(‘admin/‘, admin.site.urls),
path(‘ant_test/‘,include(‘ant_test.urls‘))
]

ant_test为app名

 

以上是关于django2.x版本 url配置的主要内容,如果未能解决你的问题,请参考以下文章

Django2.X 与 PyMySQL包兼容

django2.X 路由兼容 include模块书写规范(尴尬的namespace)

Django版本区别

Django中url与path及re_path区别

Django基于正则表达式匹配URL

python Django2.X,报错 ‘learning_logs ’is not a registered namespace,如何解决?