[英]Django custom URL mapping: date pattern not matched in template
我正在使用 Django 3.2
我創建了一個自定義 Date URL 模式匹配器,如下所示:
from datetime import datetime
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
from django.urls import path, register_converter
from . import views
from myproj.helpers import DateConverter
app_name = 'event'
register_converter(DateConverter, 'yyyymmdd')
urlpatterns = [
path('', views.index, name='index'),
path('detail/<int:event_id>/<slug:event_slug>', views.detail, name='detail'),
path('archive/<yyyymmdd:start_date>/<yyyymmdd:end_date>', views.archive, name='archive'),
]
<div class="row">
<a href="{% url 'event:archive' '2020101' '2020201' %}">Previous Events</a>
</div>
我收到以下錯誤:
未找到帶有 arguments '('2020101', '2020201')' 的“存檔”的反向。 嘗試了 1 種模式:['media/events/archive/(?P<start_date>\d{4}\d{2}\d{2})/(?P<end_date>\d{4}\ d{2}\d{2})$']
我該如何解決?
有沒有可能你沒有傳遞足夠的數字? 您的 DateConverter 需要 4 + 2 + 2 = 8 位數字,而您傳入的數字只有 7 位數字。
你的日期字符串是錯誤的。 事實上,它被解釋為:
2020101
YYYYMMDD
因此,月份缺少一個數字,因此正確的日期如下所示:
{% url 'event:archive' '20200101' '20200201' %}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.