![](/img/trans.png)
[英]Why form.is_valid() is always false in UserCreationForm, Django
[英]why Django form.is_valid() always false
我正在寫一個登錄代碼。 但是form.is_valid()總是false我不知道為什么?
模型
class User(models.Model):
Man = 'M'
Woman = 'W'
GENDER_CHOICES=(
(Man, 'M'),
(Woman, 'W'),
)
user_no = models.AutoField(primary_key=True)
user_email = models.EmailField(max_length=254)
user_pw = models.CharField(max_length=50)
user_gender = models.CharField(
max_length=1,
choices=GENDER_CHOICES,
default=Man,
)
user_birthday = models.DateField(blank=True)
user_jdate = models.DateTimeField(auto_now_add=True)
signin.html
<form method="post" action="{% url 'signin' %}">
{% csrf_token %}
<h3>ID : {{form.user_email}} </h3>
<h3>PASSWORD : {{form.user_pw}} </h3>
<input type="submit" class="btn_submit" value="로그인" />
views.py
def signin(request):
if request.method == 'POST':
form = Form(request.POST)
if form.is_valid():
print("success")
else:
print("false")
else:
form = Form()
return render(request,'signin.html',{'form':form})
1)怎么了?
2)其他簽約為true,因為signup_bails為true,但為什么簽約始終為false?
3)如何解決?
我建議一些事情。 首先,您需要首先定義表單對象。 如果您這樣做了,並且正在導入此表單,請在此處提交以進行審核。
如果您對創建自己的用戶模型感興趣,為什么不擴展Django的用戶模型。 它已經具有所有功能,如登錄,組和權限。 也許您想要Django用戶模型之外的其他屬性。 您可以在擴展模型中添加此屬性。
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, UserManager, AbstractUser
class User(AbstractUser):
def __init__(self, *args, **kwargs):
super(User, self).__init__(*args, **kwargs)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
def get_short_name(self):
return self.username
def __str__(self):
if self.first_name and self.last_name:
name = self.first_name + " " + self.last_name
else:
name = self.username
return name
def __unicode__(self):
return self.email
在此示例中,您可以看到我已經將自定義的“用戶”模型從django.contrib.auth.models擴展到AbstractUser,這意味着我可以使用Django用戶模型的所有屬性,但還添加了另外三個字段(is_active,is_admin, is_staff)。
不要忘記將這個新的擴展模型注冊到settings.py
AUTH_USER_MODEL = 'app.User'
現在,假設您要從用戶模型更新用戶實例。 讓我們使用一個基於此User模型的Form。
from django import forms
from .models import User
class UpdateUserForm(forms.ModelForm):
class Meta():
model = User
現在讓我們在您的views.py中使用此表單
from .models import User
from .forms import UpdateUserForm
from django.shortcuts import get_object_or_404
def update_user(request, id):
_user = get_object_or_404(User, id=id)
form = UpdateUserForm(instance=_user)
template = 'app/template.html'
if request.method == 'POST':
form = UpdateUserForm(request.POST, instance=_user)
if form.is_valid():
form.save()
context = {
'form':form
}
return render(request, template, context)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.