Cómo utilizar los formularios de Django correctamente
Algunos proyectos de Django no representan HTML directamente, sino que existen como marcos API, pero si no ha considerado esto, los formularios de Django se utilizarán en estos proyectos API de Django. Los formularios de Django no sirven sólo para representar HTML, su mayor ventaja son sus capacidades de validación. vistas importar LoginRequiredMixin
desde .models importar artículo
clase ArticleCreateView(LoginRequiredMixin, CreateView):
modelo = Artículo
campos = ( 'título', 'slug', 'review_num')
clase ArticleUpdateView(LoginRequiredMixin, UpdateView):
modelo = Artículo
campos = ('título' , 'slug', 'review_num')
Como se muestra en el código anterior. Como puede ver en el código anterior:
ArticleCreateView y ArticleUpdateView establecen el modelo en Artículo
Ambas vistas generarán automáticamente ModelForms basados en el modelo del artículo
El La validación de estos ModelForms basada en el modelo de artículo se basa en la validación del modelo de artículo. Primero, necesitamos crear un validador personalizado:
# utils/validator.py
from django.core.exceptions import ValidationError
def validar_ comienza ( valor ):
si no es value.startswith(u'new'):
levanta ValidationError(u'Debes comenzar con new')
Como dijiste Como Puedes ver que el proceso de validación en Django no funciona correctamente. Para reutilizar la función ValidationError, la colocamos en validators.py en las utilidades de la aplicación Django.
A continuación, podemos agregar estos validadores al modelo, pero para futuras modificaciones y mantenimiento, preferimos agregarlos al ModelForm:
# myapp/forms.py
desde django importar formularios
desde utils.validators importar validar_begin
desde .models importar artículo
clase ArtículoForm(formularios .ModelForm): p>
dev __init__ (self, *args, **kwargs):
super(ArticleForm, self).
__init__(8args, **kwargs)
self.fields["title"].validators.append(validate_begin)
clase Meta:
modelo = Artículo
El comportamiento predeterminado de las vistas de edición de Django (UpdateView, CreateView, etc.) es crear automáticamente un ModelForm basado en las propiedades del modelo en la vista. Por lo tanto, necesitamos llamar a nuestro propio Modelform para anular la creación automática:
# myapp/views.py
from django.views.generic import CreateView, UpdateView p>
de braces.views importar LoginRequiredMixin
de .models importar artículo
de .forms importar ArticleForm
clase ArticleCreateView(LoginRequiredMixin, CreateView):
modelo = Artículo
campos = ('título', 'slug', 'review_num')
form_class = ArtículoForm
clase ArticleUpdateView(LoginRequiredMixin, UpdateView):
modelo = Artículo
campos = ('título', 'slug', 'review_num')
form_class = ArticleForm
4. Modo 3, utilizar los métodos clean() y clean_lt;fieldgt;() del formulario
Si queremos validar múltiples campos en el formulario, o si la validación implica. datos existentes, entonces necesitamos usar los métodos clean() y clean_fieldgt;() del formulario. El siguiente código comprobará si la longitud de la contraseña es superior a 7 dígitos y si la contraseña es la misma que la contraseña2:
# myapp/forms.py
from django import form p>
clase MyUserForm(forms.Form):
nombre de usuario = formularios.CharField() modelo = MyUser
Vale la pena señalar que los formularios de Django también son clases de Python, y Las clases pueden heredar y ser heredadas, también se pueden modificar dinámicamente.
Vale la pena señalar que los formularios de Django también son clases de Python.