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
我想写一个基于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