Kam*_*nar 2 python django django-urls
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'),
Run Code Online (Sandbox Code Playgroud)
我一直在做教程,但在 django 2.1 中你必须使用路径,我如何转换为 2.1 django 兼容路径功能?
是否
path('activate/<str:uidb64>/<uuid:token>/', views.activate, name='activate')
Run Code Online (Sandbox Code Playgroud)
照着做?
我一直在做教程,但在 django 2.1 中你必须使用路径,我如何转换为 2.1 django 兼容路径功能?
不,在django-2.x 中,您可以使用path[Django-doc]或re_path[Django-doc]。此外,截至今天,仍然支持url[Django-doc],但将来可能会消失。
re_path实际上相当于 old 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'
),Run Code Online (Sandbox Code Playgroud)
构建一个完全等效的 URL 并不容易,因为 Django默认只支持五种路径转换:
路径转换器
默认情况下可以使用以下路径转换器:
str- 匹配任何非空字符串,不包括path分隔符'/'. 如果表达式中不包含转换器,则这是默认设置。int- 匹配零或任何正整数。返回一个int.slug- 匹配任何slug由 ASCII 字母或数字以及连字符和下划线字符组成的字符串。例如,building-your-1st-django-site。uuid- 匹配格式化的UUID. 为防止多个 URL 映射到同一页面,必须包含破折号且字母必须为小写。例如,075194d3-6885-417e-a8a8-6c931e272f00。返回一个UUID实例。path- 匹配任何非空字符串,包括path分隔符“/”。这允许您匹配一个完整的 URL,path而不是path像str.
我们可以slug在这里使用,但这将比给定的 URL匹配更多:
path(
r'^activate/(<slug:uidb64>/<slug:token>/$',
views.activate,
name='activate'
),Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)class SlugConverter(StringConverter): regex = '[-a-zA-Z0-9_]+'
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |