2010-08-20 2 views
0

У меня есть форма на моей домашней странице. Мой взгляд на это выглядит следующим образом:Django ModelForm подтвержден без отправки

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

Он делает одну форму с этими двумя частями. Однако при запуске моего браузера все сообщения об ошибках уже появляются. Я думал, что это оставило их несвязанными, и поэтому они не пробовали и не проверялись, так как я ничего не писал.

Вот код формы:

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',) 

Вот HTML:

<h1>Register</h1> 
    <form action="/register/" method="post"> 
     {{ form1.as_p }} 
     {{ form2.as_p }} 
     <input type="submit" value="Register"> 
    </form> 
+1

Это невозможно с кодом, который вы нам указали. Это действительно полный просмотр, который вы используете? Покажите свой код шаблона. –

+0

отредактировал мой исходный код – JPC

ответ

0

Оказывается, это были не ошибки, а справочные тексты.

0

Из того, что вы описали, это, кажется, как будто вы ударять register вид с недопустимым POST. Но вы говорите, что это происходит на экране main, когда вы идете на страницу?

Не должно быть ошибок формы с несвязанной формой (например, main), но они появятся в связанной форме после неудачного вызова is_valid в register.

Единственное, что я вижу, это то, что ваш метод clean на UserForm не return self.cleaned_data.

Это может облегчить поиск неисправностей, если вы временно измените имя одного из шаблонов и убедитесь, что получаете представление, которое, по вашему мнению, являетесь.