2016-09-14 156 views
1

由于某种原因,登录后,页面不会重定向到LOGIN_REDIRECT_URL指向的地方,但仍保留在空白页面/ accounts/login /中,代码为200.所以,登录后我得到一个空白页面并且拥有刷新(F5)以访问我的LOGIN_REDIRECT_URL。刷新后,我成功登入。Django&Allauth登录重定向问题

ACCOUNT_LOGOUT_REDIRECT_URL正常工作,返回代码302并直接重定向而没有空白页面,但LOGIN_REDIRECT_URL没有。如果我刷新后更改了LOGIN_REDIRECT_URL,我将重定向到更改的位置,这可以正常工作。但首先,我总是停留在空白页面/ accounts/login /上。无法找出发生这种情况的原因。

没有错误信息,我在AllAuth LoginView中没有发现任何问题。

没有太多的代码可以显示,这是内置的django和allauth功能,我已成功在其他应用程序上使用较小的django版本,这是我第一个使用django 1.10.1的项目。这也是我第一个使用jQuery移动功能的移动项目。因此,这里是我的设置:

DEBUG = True 

ALLOWED_HOSTS = ['*'] 
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 

INSTALLED_APPS = [ 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 

'django.contrib.sites', 
#'django.contrib.flatpages', 

'appconf', 
'avatar', 
'myApp', 

'allauth', 
'allauth.account', 
'allauth.socialaccount', 
'allauth.socialaccount.providers.facebook', 
'allauth.socialaccount.providers.google', 

'django.contrib.admin', 

'lockdown', 

] 

MIDDLEWARE_CLASSES = [ 
'django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
#'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 
'lockdown.middleware.LockdownMiddleware', 

] 

LOGIN_REDIRECT_URL = '/' 
ACCOUNT_LOGOUT_REDIRECT_URL = '/' 

这是登录表单:

<a class="login_link" href="#popupLogin" data-rel="popup" data-position-to="window" class="" data-transition="pop">Login</a> 
<div data-role="popup" id="popupLogin" data-theme="a" class="ui-corner-all"> 
<form id="login_form" method="POST" action="{% url 'account_login' %}"> 
    {% csrf_token %} 
    <div style="padding:10px 20px;"> 
     <h3>Please sign in</h3> 
     {{loginForm.login}} 
     {{loginForm.password}} 
      {% if redirect_field_value %} 
       <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" /> 
      {% endif %} 
      <button type="submit" class="ui-btn ui-corner-all ui-shadow ui-btn-b ui-btn-icon-left">Sign in</button> 
    </div> 
</form> 
{% if loginForm.errors %} 
    {% for field in loginForm %} 
     {% for error in field.errors %} 
      <div class="alert alert-danger"> 
       <strong>{{ error|escape }}</strong> 
      </div> 
     {% endfor %} 
    {% endfor %} 
    {% for error in loginForm.non_field_errors %} 
     <div class="alert alert-danger"> 
      <strong>{{ error|escape }}</strong> 
     </div> 
    {% endfor %} 
{% endif %} 

</div> 

而且这里是在终端发生了:

注销:

[14/Sep/2016 06:36:18] "POST /accounts/logout/ HTTP/1.1" 302 0 
[14/Sep/2016 06:36:24] "GET/HTTP/1.1" 200 12295 

登录:

[14/Sep/2016 06:36:34] "POST /accounts/login/ HTTP/1.1" 200 46 
登录后

手动刷新:

[14/Sep/2016 06:37:00] "GET /accounts/login/ HTTP/1.1" 302 0 
[14/Sep/2016 06:37:00] "GET/HTTP/1.1" 200 11434 

UPDATE 使用allauth帐户注册时,会出现同样的问题。 url accounts/signup /是一个空白页面,需要刷新才能重定向到包含注册表单的实际模板。我还没有解决它。

+0

这是什么锁定应用程序? – e4c5

+0

Lockdown在页面前放置一道屏障,以便我可以在没有任何人干扰的情况下工作。它并没有被归咎于这个问题,我试图关闭它,行为是一样的。 – Stefan

回答

0

原来,jquery-mobile将CSS转换到最上面的容器并更改背景颜色。因此,禁用解决了获取空白页的问题。页面内容在那里,只是jquery-mobile没有删除它的过渡CSS。

为什么没有allauth重定向?在一种情况下,因为表单中包含jquery-mobile使用ajax处理但未显示的错误(即使在删除转换css后也没有)。

我决定停止使用jquery-mobile进行工作,也许我会回到它,但现在不行。