0

あなたの助けが必要です。クラス User を拡張し、UserCreationForm を拡張するのと同じフィールドを追加しましたが、フォームが無効です。if form.is_valid() でコードがクラッシュします。助けてください、なぜ私のフォームが正しくないのですか?

models.py

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True, related_name='profile')
    nick_name = models.CharField(max_length=15)

私の登録フォーム

フォーム.py

class MyRegisterForm(UserCreationForm):
print "OK!"
nick_name = forms.CharField(max_length=30, required=True, widget=forms.TextInput)
print "Ook"
class Meta:
    model = UserProfile
def save(self, commit=True):
    if not commit:
        raise NotImplementedError("Can't create User and UserProfile without database save")
    print "Saving..."
    user = super(MyRegisterForm, self).save(commit=False)
    user.nick_name = self.cleaned_data["nick_name"]
    user_profile = UserProfile(user=user, nick_name=self.cleaned_data['nick_name'])
    user_profile.save()
    print "Saving complete"
    return user, user_profile

登録機能

ビュー.py

def reg(request):
    if request.method =='POST':
        form = MyRegisterForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            print username
            password1 = form.cleaned_data['password1']
            print password1
            password2 = form.cleaned_data['password2']
            print password2
            nick_name = form.cleaned_data['nick_name']
            print nick_name
            form.clean_username()
            if password1 == password2:
                new_user = form.save()
                return render_to_response('registration/registration_complete.html')
            else:
                print "Password error"
                return render_to_response('registration/registration_fail.html')
        else:
            print "FORM error" #ТУТ ВАЛИТСЯ :(
            return render_to_response('registration/registration_fail.html')
    else:
        form = UserCreationForm() # An unbound form
    return render_to_response('registration/registration_new_user.html', {
        'form': form,
        },context_instance=RequestContext(request))

設定中

設定.py

AUTH_PROFILE_MODULE = 'registration.UserProfile'

登録テンプレート

registration_new_user.html

    {% extends "base.html" %}
{% block content %}
  <h1>Registration</h1>
  <form action="registration" method="post">
    {% if form.error_dict %}
      <p class="error">Please fix the error.</p>
    {% endif %}
    {% if form.username.errors %}
      {{ form.username.html_error_list }}
    {% endif %}
    <label for="id_username">Login:</label><br> {{ form.username }}<br>
    {% if form.password1.errors %}
      {{ form.password1.html_error_list }}
    {% endif %}
    <label for="id_password1">pass:</label><br> {{ form.password1 }}<br>
    {% if form.password2.errors %}
      {{ form.password2.html_error_list }}
    {% endif %}
    <label for="id_password2">pass(again):</label><br> {{ form.password2 }}<br>
    {% if form.nick_name.errors %}
      {{ form.nick_name.html_error_list }}
    {% endif %}
    <label for="id_nick_name">nick:</label><br> {{ form.nick_name }}<br>
      <br>
    <input type="submit" value="Reg" />
  </form>
{% endblock %}
4

1 に答える 1