Quelqu'un pourrait-il m'expliquer s'il vous plaît les similitudes et les différences des formulaires de Django. Formulaire & formulaires.ModèleForme? J'ai utilisé Django pendant 4 jours, alors excusez-moi si je ne connais pas les bases. Merci d'avance!
Réponses
Trop de publicités?Les formulaires créés à partir d' forms.Form
sont configurés manuellement par vous. Il est préférable d'utiliser ces formulaires qui n'interagissent pas directement avec les modèles. Par exemple, un formulaire de contact, ou un abonnement à la newsletter, formulaire, où vous ne pourriez pas nécessairement être en interaction avec la base de données.
Lorsqu'un formulaire créé à partir d' forms.ModelForm
sera automatiquement créé et puis peut ensuite être modifié par vous. Les meilleurs exemples sont vraiment de superbes documents fournis sur le site web de Django.
forms.Form
:
Documentation: les objets de Formulaire
Exemple d'un formulaire créé avec forms.Form
:
from django import forms
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField()
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
forms.ModelForm
:
Documentation: la Création de formulaires à partir de modèles
Directement à partir de la documentation:
Si votre formulaire est destiné à être utilisé à directement ajouter ou modifier un modèle Django, vous pouvez utiliser un
ModelForm
afin d'éviter la duplication de votre modèle de description.
Exemple d'un modèle de formulaire créé avec forms.Modelform
:
from django.forms import ModelForm
# Create the form class.
class ArticleForm(ModelForm):
class Meta:
model = Article
Ce formulaire automatiquement a tous les mêmes types de champs que l' Article
modèle, il a été créé à partir.
Les similitudes sont qu'ils génèrent des ensembles d'entrées de formulaire à l'aide de widgets et valident les données envoyées par le navigateur. Les différences sont que ModelForm tire sa définition de champ d'une classe de modèle spécifiée et qu'il dispose également de méthodes traitant de la sauvegarde du modèle sous-jacent dans la base de données.
Voici comment j'étends UserCreationForm intégré myapp / forms.py :
from django import forms
from django.contrib.auth.forms import UserCreationForm
class RegisterForm(UserCreationForm):
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
email = forms.CharField(max_length=75)
class Meta(UserCreationForm.Meta):
fields = ('username','first_name','last_name', 'email')