0

我最近开始在我的项目中使用Django的REST的框架和我面临的一个问题。 下面是一个简单的身份验证的形式,我有:Django的REST的架构:改写默认的形式validaiton

<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的休息框架默认网址:

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

有没有办法使用Django默认的形式使用它呢?

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

回答

2

如果您正在使用api的api您使用的是session authentication那么您不需要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> 
+0

非常感谢!我尝试使用:url(r'^ login/$','django.contrib.auth.login',name ='login'),但不幸的是得到了错误“TypeError login()需要2个参数(1给出)” –

+1

@ stk-13正确的路径是'django.contrib.auth.views.login',你引用的那个被该视图调用 – DRC

+0

明白了,非常感谢! –