Red de conocimiento informático - Material del sitio web - Cómo utilizar los formularios de Django correctamente

Cómo utilizar los formularios de Django correctamente

1. El poder de los formularios de Django

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):

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

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

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.