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

明白了,非常感謝! –