【问题标题】:Django form validation with Bootstrap 5使用 Bootstrap 5 进行 Django 表单验证
【发布时间】:2021-10-13 16:11:22
【问题描述】:

我想用 bootstrap 5 创建 django 登录表单。如何确保表单有效?我可以在模板中使用引导程序设置 raise validationError 的样式吗?

这是我的代码:

forms.py

class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField()

def clean(self):
    username = self.cleaned_data.get("username")
    password = self.cleaned_data.get("password")
    # Check if user and password is matching and exists
    user = authenticate(username=username, password=password)
    if not user:
        raise forms.ValidationError("This is an invalid user.")

login_page.html

<form method="POST" class="row g-3 needs-validation" novalidate>
            {% csrf_token %}
              <input type="text" name="username" class="form-control" placeholder="Username" required>
              <div class="invalid-feedback">{{ #raise ValidationError here }}</div>
              <input type="password" name="password" class="form-control" placeholder="Password" required>
              <div class="invalid-feedback">{{ #raise ValidationError here }}</div>
              <input class="btn btn-primary" type="submit" value="Login">

我可以这样做吗?还是有更好的解决方案来创建登录表单验证? 谢谢。

【问题讨论】:

    标签: django validation django-forms bootstrap-5


    【解决方案1】:

    你可以像这样在你的 forms.py 中通过验证

    forms.py

     class LoginForm(forms.Form):
            username = forms.CharField()
            password = forms.CharField(widget=forms.PasswordInput)
        
            def clean(self, *args, **kwargs):
                username = self.cleaned_data.get("username")
                password = self.cleaned_data.get("password")
                if username and password:
                    user = authenticate(username=username, password=password)
                    if not user:
                        raise forms.ValidationError("This user doesn't exist")
                    if not user.check_password(password):
                        raise forms.ValidationError("Incorrect Password")
                    if not user.is_active:
                        raise forms.ValidationError("User no longer Active")
                return super(LoginForm,self).clean(*args,**kwargs)
    

    【讨论】:

    • 如何在html页面中显示?
    猜你喜欢
    • 2013-08-20
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 2014-07-25
    • 2019-01-26
    相关资源
    最近更新 更多