Django-rest-framework:重写默认表单验证

时间:2014-12-20 17:52:49

标签: django django-forms django-rest-framework django-authentication django-validation

我最近开始在我的项目中使用django-rest-framework,但我遇到了一个问题。 这是一个简单的身份验证表格:

<form action="{% url 'rest_framework:login' %}" method="post">
    {% csrf_token %}
    <input type="e-mail" name="username" value="" placeholder="Логин" maxlength="100" required="required">
    <input type="password" name="password" value="" placeholder="Пароль" maxlength="100" required="required">
    <button type="submit" class="lightbluebtn">Войти</button>
</form>

我无法弄清楚如何验证它。我只需要在表单上显示错误。 每次我提交包含无效数据的表单时,我都会重定向到rest-framework登录页面。 我还有django-rest-framework默认网址:

url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),

有没有办法将它用于django默认表单?

你能帮我解决一下吗? 我将非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

如果您使用的是session authentication api,那么您不需要rest_framework登录页面,该页面通常在开发环境中很有用,您只需指向{% url 'login' %}页面(使用django.contrib.auth.views.login视图),并通过命名您的registration/login.html覆盖该模板,输出表单错误只需使用{{ form.error }},例如:

{# file registration/login.html #}
{% if form.errors %}
<div class="alert alert-danger">
  <p>Your email and password didn't match. Please try again.</p>
</div>
{% endif %}
<form action="{% url 'login' %}" method="post">
{% csrf_token %}
    <input type="e-mail" name="username" value="" placeholder="Логин" maxlength="100" required="required">
    <input type="password" name="password" value="" placeholder="Пароль" maxlength="100" required="required">
    <button type="submit" class="lightbluebtn">Войти</button>
</form>