捕获 yyyy-mm-dd 日期的 Django url

Pyt*_*ere 9 python regex django django-urls

如何在 Django 中捕获包含 yyyy-mm-dd 的 url。所以就像 www.mydomain.com/2011-02-12。我试过:

url(r'^(?P<date>\d{4}-\d{2}-\d{2})/$', views.index, name='index'), 
Run Code Online (Sandbox Code Playgroud)

但是,服务器说找不到页面。

Cer*_*bia 13

在 Django 3.0.5 中,我使用以下 urls.py

from django.urls import path, register_converter
from datetime import datetime
from . import views

class DateConverter:
    regex = '\d{4}-\d{2}-\d{2}'

    def to_python(self, value):
        return datetime.strptime(value, '%Y-%m-%d')

    def to_url(self, value):
        return value

register_converter(DateConverter, 'yyyy')

urlpatterns = [
    path('', views.index, name='index'),
    path('date/<yyyy:date>/', views.date, name='date'),
]
Run Code Online (Sandbox Code Playgroud)


Mos*_*oye 7

您应该在 url 模式中有一个组名:

url(r'^(?P<date>\d{4}-\d{2}-\d{2})/$', views.index, name='index'),
#          ^^^^
Run Code Online (Sandbox Code Playgroud)

还要注意 url: 中的尾部斜杠www.mydomain.com/2011-02-12/。如果您不想在 url 中使用斜杠,则可以将其从模式中删除。


然后您的视图函数会将组的名称作为其参数之一

def index(request, date):
    ...
Run Code Online (Sandbox Code Playgroud)

您应该在 Django url 上看到名为组文档