如何在Django中设置USerCreationForm的表单错误的样式?

问题描述

我正在使用USerCreationForm制作一个注册表单的项目,我想设置表单错误的样式,导致错误在我的模板image of my form and how error looks like 中显得很丑

所以我想要的是它不应该显示错误的字段,而应该直接显示错误。

我的注册表格

<form action="{% url 'registration_pg' %}" method="post">
            {% csrf_token %}
            <div class="name-container">
                <!-- < id="first_name " class="form-control" name="first_name" placeholder="first name" required> -->
                {{form.first_name}}
                {{form.last_name}}
            </div>
            <div class="username-container form-inputs">
                {{form.username}}
            </div>
            <div class="student-info">
                {{form.std}}
                {{form.div}}
                {{form.rollno}}
            </div>
            <div class="user-fields">
                {{form.email}}
                {{form.password1}}
                {{form.password2}}
            </div>
            <div class="form-errors">
                {{form.errors}}
            </div>
            <button class="btn btn-block btn-info ripple-effect" type="submit" name="Submit" alt="sign in" style="background:#0277bd;">Submit</button>
        </form>

我的forms.py文件

class StudentCreationForm(UserCreationForm):
first_name = forms.CharField(max_length=30,widget=forms.TextInput(attrs={'id': 'first_name','class': 'form-control','placeholder': 'first name'}))
last_name = forms.CharField(max_length=50,widget=forms.TextInput(attrs={'id': 'last_name','placeholder': 'last name'}))
username = forms.CharField(max_length=100,widget=forms.TextInput(attrs={'id': 'username','placeholder': 'username eg (jhon16)'}))
std = forms.IntegerField(widget=forms.NumberInput(attrs={'id': 'std','class': 'form-control stu-info','placeholder': 'std'}))
div = forms.CharField(max_length=1,widget=forms.TextInput(attrs={'id': 'div','placeholder': 'division'}))
rollno = forms.IntegerField(widget=forms.NumberInput(attrs={'id': 'rollno','placeholder': 'roll no'}))
email = forms.EmailField(widget=forms.EmailInput(attrs={'id': 'email','placeholder': 'email'}))
password1 = forms.CharField(max_length=100,widget=forms.PasswordInput(attrs={'id': 'password1','placeholder': 'password'}))
password2 = forms.CharField(max_length=100,widget=forms.PasswordInput(attrs={'id': 'password2','placeholder': 'confirm password'}))

class Meta:
    model = User
    fields = ['first_name','last_name','username','std','div','rollno','email','password1','password2']

解决方法

我正在处理同样的问题,但我已经找到了解决方案。

        {% for field,error in form.errors.items %}
        <div class="alert alert-danger my-3 p-1" role="alert">
            {{ error|striptags }}
        </div>
        {% endfor %}

首先,您必须使用 for 循环来访问每个字段及其错误消息。然后只插入变量错误并应用条带标签(它会删除项目符号)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...