J'ai un formulaire sur ma page d'accueil. Selon moi, pour qui ressemble à ceci:Django ModelForm validé sans soumettre
from djangoproject1.authentication import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
def main(request):
uf = forms.UserForm()
upf = forms.UserProfileForm()
return render_to_response("authentication/index.html", {'form1': uf, 'form2':upf})
def register(request):
if request.method == 'POST':
uf = forms.UserForm(request.POST)
upf = forms.UserProfileForm(request.POST)
if uf.is_valid() and upf.is_valid():
user = uf.save(commit=False)
user.set_password(uf.cleaned_data["password"])
user.save()
userprofile = upf.save(commit=False)
userprofile.user = user
userprofile.save()
return HttpResponseRedirect("/register-success/")
return render_to_response("authentication/index.html", {'form1': uf,'form2':upf})
Il fait une forme avec ces deux parties. Lorsque je lance mon navigateur, tous les messages d'erreur apparaissent déjà. Je pensais que cela les laissait non liés et donc ils ne tenteraient pas d'être validés puisque je n'avais rien publié.
est ici le code de formulaire:
from django import forms
from django.contrib.auth.models import User
from djangoproject1.authentication.models import UserProfile
class UserForm(forms.ModelForm):
cpassword = forms.PasswordInput()
def clean(self):
if self.cleaned_data['cpassword']!=self.cleaned_data['password']:
raise forms.ValidationError("Passwords don't match")
class Meta:
model = User
fields = ('username','email','password',)
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('phonenumber',)
Voici le html:
<h1>Register</h1>
<form action="/register/" method="post">
{{ form1.as_p }}
{{ form2.as_p }}
<input type="submit" value="Register">
</form>
Ce n'est pas possible avec le code que vous nous avez montré. Est-ce vraiment la vue complète que vous utilisez? Montrez votre code de modèle aussi. –
a modifié mon code postuel original – JPC