Django&Allauth登录重定向问题
由于某种原因,登录后,页面不会重定向到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 /是一个空白页面,需要刷新才能重定向到包含注册表单的实际模板。我还没有解决它。
原来,jquery-mobile将CSS转换到最上面的容器并更改背景颜色。因此,禁用解决了获取空白页的问题。页面内容在那里,只是jquery-mobile没有删除它的过渡CSS。
为什么没有allauth重定向?在一种情况下,因为表单中包含jquery-mobile使用ajax处理但未显示的错误(即使在删除转换css后也没有)。
我决定停止使用jquery-mobile进行工作,也许我会回到它,但现在不行。
这是什么锁定应用程序? – e4c5
Lockdown在页面前放置一道屏障,以便我可以在没有任何人干扰的情况下工作。它并没有被归咎于这个问题,我试图关闭它,行为是一样的。 – Stefan