Django ModelForm подтверждена без отправки - PullRequest
0 голосов
/ 20 августа 2010

У меня есть форма на моей домашней странице. Мой взгляд на это выглядит так:

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>

Ответы [ 2 ]

0 голосов
/ 23 августа 2010

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

0 голосов
/ 21 августа 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...