使用 django 脆皮表单自定义非表单错误

Posted

技术标签:

【中文标题】使用 django 脆皮表单自定义非表单错误【英文标题】:Customize non form errors with django crispy form 【发布时间】:2017-03-19 12:16:29 【问题描述】:

我想自定义 django crispy 显示非表单错误的方式。我知道如何更改文本,但我不知道在哪里更改 css。

这是图片: My login area

forms.py

class LoginForm(forms.Form):
    alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', 'Only alphanumeric characters are allowed.')
    username = forms.CharField(label='', required=True, widget=forms.TextInput(attrs='placeholder': 'Username'))
    password = forms.CharField(label='', required=True, widget=forms.PasswordInput(attrs='placeholder': 'Password'))
    name = forms.CharField(label='', 
                        required=True ,  
                        validators=[alphanumeric], 
                        widget=forms.TextInput(attrs='placeholder': 'Name'))


    def clean(self):
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')
        user = authenticate(username=username, password=password)
        if not user or not user.is_active:
            raise forms.ValidationError('Invalid Login : I want to change this CSS')
        return self.cleaned_data

    def login(self, request):
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')
        user = authenticate(username=username, password=password)
        return user

模板 - html

<form method="POST" action="">% csrf_token %
    <!--% if  form.non_field_errors %
        testing
    % endif %-->
    form|crispy
    <div class="form-info">
        <label class="hvr-sweep-to-right">
            <input class="create btn"  type="submit" value="Submit">
        </label>
    </div>
</form>

【问题讨论】:

【参考方案1】:

我假设您使用带有引导程序的酥脆表单(取决于图像中的样式)。

所以你可以覆盖原来的引导类

.alert 
  padding: 0.75rem 1.25rem;
  margin-bottom: 1rem;
  border: 1px solid transparent;
  border-radius: 0.25rem;


.alert-danger 
  background-color: #f2dede;
  border-color: #ebcccc;
  color: #a94442;


.alert-danger hr 
  border-top-color: #e4b9b9;


.alert-danger .alert-link 
  color: #843534;

或其他警报类,例如警报成功。

如果您不想为整个项目覆盖这些类,只需在您的脆表单周围设置一个 div

<div class"crispyform">
  form|crispy
</div>

并写入您的自定义 css s.th。喜欢

.crispyform .alert 
  # your new style

【讨论】:

谢谢兄弟!我一直在研究后端,现在是时候去研究前端了。我试图将错误作为 django.message 发送,然后我会对其进行自定义。但是你的方法是最简单的!

以上是关于使用 django 脆皮表单自定义非表单错误的主要内容,如果未能解决你的问题,请参考以下文章

在自定义 Django 表单中验证和显示错误

自定义格式的 Django 表单错误出现两次

Django 自定义表单字段错误地呈现值

Django 将自定义表单错误添加到 form.errors

Django 1.4 - 在元字段 Model=User 的表单中向用户字段添加自定义错误消息

如何在 django 模型表单中添加自定义字段?