【问题标题】:Django-rest-framework: rewrite default form validaitonDjango-rest-framework:重写默认表单验证
【发布时间】:2015-02-19 09:04:33
【问题描述】:

我最近开始在我的项目中使用 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 默认表单一起使用?

你们能帮我解决它吗? 我将非常感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    如果您使用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>
    

    【讨论】:

    • 非常感谢!我尝试使用: url(r'^login/$', 'django.contrib.auth.login', name='login') 但不幸的是收到错误“TypeError login() 恰好需要 2 个参数(1 个给定)”
    • @stk-13 正确的路径是'django.contrib.auth.views.login',你引用的那个是那个视图调用的
    猜你喜欢
    • 1970-01-01
    • 2020-08-09
    • 2018-06-09
    • 2019-04-14
    • 2017-01-24
    • 2013-12-27
    • 2019-05-22
    • 2013-12-27
    • 2021-09-09
    相关资源
    最近更新 更多