首页 > 解决方案 > Django:从哪里清除 URL 中的值?

问题描述

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

URL 如下所示:

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

我应该使用哪种方法将字符串(例如“2018-12-31”)“清理”到 python datetime 对象?

标签: djangodjango-class-based-views

解决方案


在 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")

网址.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 -路径转换器


推荐阅读