将旧的Django URL更改为新路径

时间:2018-05-18 22:36:42

标签: django url path django-2.0

所以我在Django 2.0中创建了一个新站点,并且正在按照本教程制作一个带有激活电子邮件的用户注册表单,而我对新Django 2的理解还不够,所以问的是Django 2等价物是什么这个网址

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

1 个答案:

答案 0 :(得分:4)

您的路径没有直接转换,您可以使用转换令牌的文档中所述的转换器。这里是docs的例子:

class FourDigitYearConverter:
    regex = '[0-9]{4}'

    def to_python(self, value):
        return int(value)

    def to_url(self, value):
        return '%04d' % value

注册转换器

from django.urls import path, register_converter

from . import converters, views

register_converter(converters.FourDigitYearConverter, 'yyyy')

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

或者你可以像现在一样正确使用路径:

from django.urls import path, re_path

from . import views

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    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')
]

我会坚持使用re_path使用正则表达式,因为你知道它的工作原理已经完成了。

以下是文档的链接: https://docs.djangoproject.com/en/2.0/topics/http/urls/