Django: 警告提示 This was likely an oversight when migrating to django.urls.path() / URL路径参数
1. 问题概述:
Django 警告提示 This was likely an oversight when migrating to django.urls.path()
2. 相关原因:
Django 2.0中django.urls.path()不使用正则表达式。
3. 解决办法
如果要使用正则表达式,可以使用django.urls.re_path()
from django.urls import include, path, re_path import views urlpatterns = [ ... re_path(r'^(?P[0-9])/$', views.detail, name='detail'), ]
URL路径参数
- 如果想从URL中获取值,需要在正则表达式中使用
分组
, - 获取值分为两种方式
- 位置参数
- 参数的位置不能错
- 关键字参数
- 参数的位置可以变,跟关键字保持一致即可
- 位置参数
- 注意:两种参数的方式不要混合使用,在一个正则表达式中只能使用一种参数方式
- 分别使用以上两种获取URL值的方式提取出
18 188
http://127.0.0.1:8000/18/188/
位置参数
- 应用中
urls.py
url(r'^(\d+)/(\d+)/$', views.index),
- 视图中函数: 参数的位置不能错
def index(request, value1, value2): # 构造上下文 context = {'v1':value1, 'v2':value2} return render(request, 'Book/index.html', context)
关键字参数
- 应用中
urls.py
- 其中
?P<value1>
部分表示为这个参数定义的名称为value1
- 可以是其它名称,起名要做到见名知意
url(r'^(?P<value1>\d+)/(?P<value2>\d+)/$', views.index),
- 其中
- 视图中函数: 参数的位置可以变,跟关键字保持一致即可
def index(request, value2, value1): # 构造上下文 context = {'v1':value1, 'v2':value2} return render(request, 'Book/index.html', context)