url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
views.activate, name='activate'),
我一直在做教程,但是在django 2.1中,您必须使用path,如何转换为2.1 django兼容路径函数?
是
path('activate/<str:uidb64>/<uuid:token>/', views.activate, name='activate')
做同样的事吗?
答案 0 :(得分:3)
我一直在做教程,但是在django 2.1中,您必须使用path,如何转换为2.1 django兼容路径函数?
否,在django-2.x中,您可以使用path
[Django-doc]或re_path
[Django-doc]。此外,到目前为止,url
[Django-doc]仍受支持,但将来可能会消失。
re_path
实际上等效于旧的url
,因此您可以这样写:
re_path(
r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
views.activate,
name='activate'
),
构造一个完全等效的URL并不容易,因为Django仅支持five path conversions by default:
路径转换器
默认情况下,以下路径转换器可用:
str
-匹配除path
分隔符'/'
以外的任何非空字符串。如果表达式中不包含转换器,则为默认设置。int
-匹配零或任何正整数。返回int
。slug
-匹配任何由ASCII字母或数字以及连字符和下划线字符组成的slug
字符串。例如, 建筑物1st-django网站。uuid
-匹配格式化的UUID
。为防止多个URL映射到同一页面,必须包括破折号和字母 小写。例如075194d3-6885-417e-a8a8-6c931e272f00。退货UUID
实例。path
-匹配任何非空字符串,包括path
分隔符'/'。这使您可以匹配完整的URLpath
,而不是像path
一样只是URLstr
的一部分。
我们可以在此处使用slug
,但这将比给定的URL匹配更多:
path(
r'^activate/(<slug:uidb64>/<slug:token>/$',
views.activate,
name='activate'
),
slug
pattern takes as regex equivalent:
class SlugConverter(StringConverter): regex = '[-a-zA-Z0-9_]+'