Django登录表单 - 登录仪表板第二次 [英] Django Login Form- Logs into the dashboard 2nd time

查看:243
本文介绍了Django登录表单 - 登录仪表板第二次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个登录表单。每当我第一次登录时,它再次询问用户名和密码,而不显示我的用户名和密码。但是当我用相同的用户名和密码重新登录时,它会完美登录。如何可能?



这是我的代码: -

  {%extendsbase1.html%} 
{%block header%}
{%endblock%}

{%block content%}
< div类= 包裹 >
< div class =content-wrap>
< a href =#class =logo>< / a>
< form action =。 method = POST class =form-signinclass =well form-inline>
< h3 class =form-signin-heading>< / h3>
{%csrf_token%}
{{form.as_p}}
< input type =submitvalue =loginclass =btn btn-primary>
< / form>
< / div>
< / div><! - end of wrap - >

{%endblock%}

我的urls.py文件

 从django.contrib.auth.views导入登录,注销
从django.conf.urls import *

urlpatterns = patterns('',
url(r'login',login,kwargs = {'template_name':'auth / login.html'},name ='xyz_login '),
url(r'logout',logout,kwargs = {'template_name':'auth / logout.html'},name ='xyz_logout'),

settings.py文件

  LOGIN_REDIRECT_URL ='/ dashboard /'
LOGIN_URL ='/ login /'
AUTHENTICATION_BACKENDS =('modules.data.backend.MyModelBackend',)

backend.py

  from django.contrib.auth.backends import ModelBackend 

class MyModelBackend(ModelBackend):
def authenticate(self,username = None,password = None )
返回超级(MyModelBackend,self).authenticate(username = username,password = password)


解决方案

正如你在这些日志中可以看到的那样:



1st:



[pre] [28 / Apr / 2014 06:49:22]POST / dashboard / HTTP / 1.1302 0
[28 / Apr / 2014 06:49:22 ]GET / login /?next = / dashboard / HTTP / 1.1200 1536

第2: / p>

  [28 / Apr / 2014 06:50:27]POST / login / dashboard / HTTP / 1.1302 0 
[28 / Apr / 2014 06:50:27]GET / dashboard / HTTP / 1.1200 11292

第一次您正在 POST请求 / dashboard url,它必须是 login_required 即可。因此,您可以获得302 重定向 / login /?next = / dashboard /



第二次 POST正确 / login 上。因此,您已经登录并重定向到 / dashboard



现在,您将不得不调试,看看为什么第一个POST请求正在进行到 / dashboard 而不是 / login


I've a login form. Whenever I sign into it for the first time, it asks me the username and password again, without showing me inavlid username and password. But when I login again with the same username and password it logs in perfectly. How is it possible?

Here is my code:-

{% extends "base1.html" %}
    {% block header %} 
    {% endblock %}

    {% block content %}
        <div class="wrap">
            <div class="content-wrap">
                <a href="#" class="logo"></a>
                <form action ="." method = POST class="form-signin" class="well form-inline">
                    <h3 class="form-signin-heading"></h3>
                    {% csrf_token %}    
                    {{ form.as_p }}
                    <input type = "submit" value = "login" class="btn btn-primary">
                </form>
            </div>
        </div><!--end of wrap-->

    {%endblock%}        

My urls.py file

from django.contrib.auth.views import login, logout
from django.conf.urls import *

urlpatterns = patterns('',
    url(r'login', login,kwargs = {'template_name' : 'auth/login.html'}, name = 'xyz_login'),
    url(r'logout', logout,kwargs = {'template_name' : 'auth/logout.html'}, name = 'xyz_logout'),
)

settings.py file

LOGIN_REDIRECT_URL  = '/dashboard/'
LOGIN_URL           = '/login/'
AUTHENTICATION_BACKENDS = ('modules.data.backend.MyModelBackend',)

backend.py

from django.contrib.auth.backends import ModelBackend

class MyModelBackend(ModelBackend):
    def authenticate(self,username=None, password=None):
        return super(MyModelBackend,self).authenticate(username=username,password=password)

解决方案

As you can see in these logs:

1st :

[28/Apr/2014 06:49:22] "POST /dashboard/ HTTP/1.1" 302 0 
[28/Apr/2014 06:49:22] "GET /login/?next=/dashboard/ HTTP/1.1" 200 1536

2nd :

[28/Apr/2014 06:50:27] "POST /login/dashboard/ HTTP/1.1" 302 0 
[28/Apr/2014 06:50:27] "GET /dashboard/ HTTP/1.1" 200 11292

The 1st time you are doing a POST request to /dashboard url, which must be login_required. Hence, you get a 302 redirect to /login/?next=/dashboard/

The 2nd time you POST correctly on /login. Hence you get logged in and redirected to /dashboard

Now you will have to debug and see why the first POST request is being made to /dashboard rather than /login ?

这篇关于Django登录表单 - 登录仪表板第二次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆