在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'),
但是服务器显示页面未找到。
url(r'^(?P<date>\d{4}-\d{2}-\d{2})/$', views.index, name='index'),
但是服务器显示页面未找到。
在 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'),
]
在URL模式中,您应该有一个组名称:
url(r'^(?P<date>\d{4}-\d{2}-\d{2})/$', views.index, name='index'),
# ^^^^
同时注意URL中的尾斜杠:www.mydomain.com/2011-02-12/
。如果您不想在URL中使用斜杠,则可以从模式中删除它。
然后您的视图函数将以组名作为其参数之一。
def index(request, date):
...
试试这个:
url(r'^(?P<date>[0-9]{4}-?[0-9]{2}-?[0-9]{2})/$', views.index, name='index'),