为什么是Django表格有效吗()总是出错

2024-04-20 08:26:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我在写登录密码。 但是表格有效吗()总是错误的 我不知道为什么?在

在模型.py在

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)

在登录.html在

^{pr2}$

在视图.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)其他签名都是真的,因为签名是真的,但是为什么签名总是假的?在

3)如何修复?在


Tags: pyformtruemodelsrequesthtmlgenderlength
1条回答
网友
1楼 · 发布于 2024-04-20 08:26:56

我有几个建议。首先,需要先定义表单对象。如果您已经导入了此表单,请在此处提交以供审阅。在

如果您对创建自己的用户模型感兴趣,为什么不扩展Django的用户模型呢。它已经具备了登录、组和权限等所有功能。也许除了Django用户模型之外,您还需要其他属性。您可以在扩展模型中添加此属性。在

应用程序/模型.py在

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

在这个示例中,您可以看到我已经扩展了我的自定义“User”模型,以从django.contrib.auth公司.models,这意味着我可以使用Django用户模型中的所有属性,但我还添加了三个字段(is_active、is_admin、is_staff)。在

别忘了把这个新的扩展模型注册到设置.py在

在设置.py在

^{pr2}$

现在假设您想从您的用户模型更新用户实例。让我们使用一个基于这个用户模型的表单。在

应用程序/表单.py在

from django import forms 
from .models import User


class UpdateUserForm(forms.ModelForm):

    class Meta():
        model = User

现在让我们在你的视图.py在

应用程序/视图.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)

相关问题 更多 >