Django:从哪里清除 URL 中的值?

Django: Where to clean values from URL?

我想写一个基于class的视图,我想清理URL的一部分:

URL 看起来像这样:

r'^some-date/(?P<date>\d\d\d\d-\d\d-\d\d)/view'

我应该使用哪种方法将字符串(例如“2018-12-31”)"clean" 发送到 python 日期时间对象?

def clean_date(request, date):
    datetime_object = datetime.strptime(date, '%b %d %Y %I:%M%p')

在django2.0中我们可以使用路径转换器。

custom_path_converter.py

from datetime import datetime

class DatePathConverter:
    regex = '\d\d\d\d-\d\d-\d\d'
 
    def to_python(self, date_str):
        date = datetime.strptime(value, "%Y-%m-%d").date()
        return date
 
    def to_url(self, date):
        return date.strftime("%Y-%m-%d")

urls.py

from django.urls import register_converter, path
from .views import views
register_converter(DatePathConverter, 'date')
 
urlpatterns = [
    # ....
    path('some-date/<date:date>/', views.some_view)
    # ....
]

阅读:https://learnbatta.com/blog/django-custom-path-converters-17/
官方文档:https://docs.djangoproject.com/en/2.0/topics/http/urls/#registering-custom-path-converters