我正在为Django应用创建登录页面。目前,如果我输入了错误的用户名或密码,则会显示以下错误消息:
。
有没有一种方法可以自定义此消息,以消除“ ___all____”和项目符号要点?也许只是说“请输入正确的用户名和密码。请注意,两个字段都区分大小写。”?
下面是我的代码的简化版本:
views.py:
from django.contrib.auth import authenticate,login,logout
html:
<div class="form_container">
<form class="log_in_form" action="{% url 'inventory_management_app:login' %}" method="post">
<p>
{% csrf_token %}
{{ form.username }}
</p>
<br><br>
<p>
{{ form.password }}
<br>
{{ form.errors }}
</p>
<p>
<br><br>
<input id="search-button" class="btn btn-dark" type="submit" value="Login">
</form>
</p>
</div>
forms.py:
from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.forms.widgets import PasswordInput, TextInput
class CustomAuthForm(AuthenticationForm):
username = forms.CharField(widget=TextInput(attrs={'class':'validate','placeholder': 'Email'}))
password = forms.CharField(widget=PasswordInput(attrs={'placeholder':'Password'}))
urls.py
url(r'^login/$', auth_views.login, name='login', kwargs={"authentication_form":CustomAuthForm}),
答案 0 :(得分:2)
更改表单类中的invalid_login错误消息。
class CustomAuthForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
self.error_messages['invalid_login'] = 'Custom error'
super().__init__(*args, **kwargs)
答案 1 :(得分:0)
您可以使用表单验证来引入自定义方法。请参阅https://docs.djangoproject.com/en/2.1/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other
答案 2 :(得分:0)
实施marxins答案后,从自定义消息中删除项目符号点仍然很困难。我发现只需更改模板以包含以下代码,就可以自定义错误消息,而无需更改Forms.py中的任何内容。我的其余代码与问题中给出的代码相同,但是我添加了以下内容:
{% if form.errors %}
<p>my custom error message</p>
{% endif %}
所以现在我的HTML看起来像这样:
<form class="log_in_form" action="{% url 'inventory_management_app:login' %}" method="post">
<p>
{% csrf_token %}
{{ form.username }}
</p>
<br>
<p>
{{ form.password }}
<br>
<p>
</p>
<br>
{% if form.errors %}
<p>username or password not correct</p>
{% endif %}
</p>
<p>
<br><br>
<input id="search-button" class="btn btn-dark" type="submit" value="Login">
</form>