簡體   English   中英

奇怪的驗證錯誤消息

[英]Strange validation error messages

我正在使用標准的身份驗證表格。 它的干凈方法如下所示:

def clean(self):
    username = self.cleaned_data.get('username')
    password = self.cleaned_data.get('password')

    if username and password:
        self.user_cache = authenticate(username=username, password=password)
        if self.user_cache is None:
            raise forms.ValidationError(_("Please enter a correct username and password. Note that both fields are case-sensitive."))
        elif not self.user_cache.is_active:
            raise forms.ValidationError(_("This account is inactive."))

    # TODO: determine whether this should move to its own method.
    if self.request:
        if not self.request.session.test_cookie_worked():
            raise forms.ValidationError(_("Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."))

    return self.cleaned_data

我的登錄表格:

<form method="post" action="{% url django.contrib.auth.views.login %}">
    <table>
        {% if form.errors %}
            <tr class="form-errors">
                <td>
                    <ol>
                        {% for error in form.errors %}
                            <li>{{ error }}</li>
                        {% endfor %}
                    </ol>
                </td>
            </tr>
        {% endif %}

但是我得到的不是驗證消息:

如果用戶名和密碼不正確或帳戶無效:“ 1. __all__
如果未提供1. password :“ 1. password
如果未提供1. username :“ 1. username
如果都沒有給出:“ 1. username 2. password
沒有關於用戶名不正確的消息

編輯:如果我改變

                <td>
                    <ol>
                        {% for error in form.errors %}
                            <li>{{ error }}</li>
                        {% endfor %}
                    </ol>
                </td>

至 :

{{form.errors}}

我收到了__all__ and beneath it "Account inactive" 如何獲取消息? 有任何想法嗎 ?

嘗試這個。 form.errors是一本字典,因此像每本字典一樣,您可以讀取鍵和值。 鍵是字段或__all__ ',值是您要查找的錯誤消息。

{% if form.errors %}
<tr>
    {% for k, v in form.errors.items %}
    <td>{{k}}</td>
    <td>{{v}}</td>
    {% endfor %}
</tr>
{% endif %}

編輯

如果您不想選擇特定的字段錯誤類型:

{% if form.errors %}
    {% for k, v in form.errors.items %} 
        <tr>
            {% ifequal k 'password' %}
                <td>Password</td>
                {% else %}
                    {% ifequal k 'username' %}
                        <td>Username</td>
                        {% else %}
                            <td>Other</td>
            {% endifequal %}{% endifequal %}                
            <td>{{v}}</td>
        </tr>
    {% endfor %}
{% endif %}

或在ifequal中選擇'__all__'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM