如何在Django 2中限制url模式

时间:2017-12-15 05:35:43

标签: python regex url-routing django-2.0

Django 1.11使用正则表达式来检查适当的url。例如

url(r'^(?P<year>[0-9]{4})/$', views.abc),

我可以查看我的年份是4位数。

引入的新方式就像

path('<int:year>/', views.abc),

是否有使用path()使用限制的默认方式?

1 个答案:

答案 0 :(得分:1)

直接从Django 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 register_converter, path

from . import converters, views

register_converter(converters.FourDigitYearConverter, 'yyyy')

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