django usercreationform is_valid всегда возвращает false

я зеленая рука для django, когда я пытаюсь использовать usersignupform, сообщение запроса похоже на

`<QueryDict: {'csrfmiddlewaretoken': ['Wxlj42vbyAweKevBeSs5TvGj1ot8tJknUOGzmlKCphs5cDnqvsmriCSK9wYDuAof'], 'username': ['dulong11'], 'email': ['[email protected]'], 'password1': ['dulong'], 'password2': ['dulong'], 'submit': ['']}` 

тогда usercreationform.is_valid() всегда будет возвращать false, я не знаю, почему и как это происходит? почему не может работать??

form.py

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User

class UserSignUpForm(UserCreationForm):
    #username = forms.CharField()
    email = forms.EmailField(max_length=100)
    #password1 = forms.CharField()
    #password2 = forms.CharField()

     class Meta:
        model = User
        fields = ('username', 'email', 'password1', 'password2')

view.py я пытался использовать usersignupform для создания нового пользователя, но это просто не удалось, а form.is_valid() имеет значение false

form = UserSignUpForm(request.POST)
print(request.POST)
print(form.is_valid())

register.html

      <form action="." method="post" id="frm" class="frm">
            {% csrf_token %}
              <div class="r-list">
                <div class="line">
                    <i class="dqfont icon-mobilephone"></i>
                    <input type="text" name="username" placeholder="用户名" autocomplete="off">
                    <span class="error" id="tel_error"></span>
                </div>
              </div>
              <div class="r-list">
              <div class="line">
                <i class="dqfont icon-mobilephone"></i>
                <input type="email" name="email" placeholder="请输入邮箱" autocomplete="off">
              </div>
              <span class="error"></span>
              </div>
            <div class="r-list">
              <div class="line">
                <i class="dqfont icon-pass"></i>
                <input type="password" name="password1" placeholder="请输入密码" autocomplete="off">
              </div>
              <span class="error"></span>
            </div>
            <div class="r-list">
              <div class="line">
                <i class="dqfont icon-pass"></i>
                <input type="password" name="password2" placeholder="请再次输入你的密码" autocomplete="off">
              </div>
              <span class="error"></span>
            </div>
            <div class="r-list">
              <div class="protocol">
               <span class="checkbox-checked" id="accept">我已阅读并同意<a href="#" 
     target="_blank">《IPLink用户协议》</a>和<a href="#" target="_blank">《隐私保护》</a></span>
              </div>
            </div>
            <div class="r-list">
              <span class="error"></span>
              <!--a href="#" class="btn" id="btn">同意协议并注册</--a>-->
              <button type="submit" class="btn" name="submit" id="btnSubmit"  
     style="width:380px">同意协议并注册</button>
            </div>
        </form>

person user3770635    schedule 17.09.2019    source источник


Ответы (1)


form.error выглядит следующим образом. проблема решена, слишком глупо, блин~

  • password2
  • The password is too similar to the username.
  • Этот пароль слишком короткий. Он должен содержать не менее 8 символов.
  • person user3770635    schedule 17.09.2019
    comment
    вы всегда должны отображать ошибки формы в своем шаблоне. Как ваши пользователи должны знать, что не так, когда они заполняют регистрационную форму? - person dirkgroten; 17.09.2019