Tengo un sistema de registro, donde los usuarios pueden registrar varios síntomas para un día determinado. Obtengo la fecha como slug en mi URL, pero necesito validarla. ¿Cuál es la mejor práctica y por qué?
hacer una función de validación en la vista de clase y usarla allí
agregar un campo de formulario oculto y escribir un DateValidator personalizado para él?
Puede definir un convertidor de ruta que analizará los objetos de date . Puede definir un patrón personalizado con:
# app_name /converters.py class DateConverter: regex = '[0-9]{4}-[0-9]{2}-[0-9]{2}' format = '%Y-%m-%d' def to_python(self, value): return datetime. strptime(value, self.format) .date() def to_url(self, value): return value. strftime(self.format)A continuación, podemos registrar ese convertidor de ruta [Django-doc] y trabajar con:
from app_name .converters import DateConverter from django.urls import path, register_converter register_converter(DateConverter, 'date') urlpatterns = [ # … path('some/path/ <date:date> /', some_view), # … ] Esto pasará un único parámetro de date a la vista, que es un objeto de date , por lo que puede trabajar con:
def some_view(request , date ): # … Si visita la ruta /some/path/2021-10-17 , la date será un objeto de date(2021, 10, 17) .