由于某些原因,登录后页面不会重定向到LOGIN_REDIRECT_URL指向的位置,但仍保留在空白页面/ accounts / login /上,代码为200.因此,登录后我得到一个空白页面并且必须刷新(F5)到我的LOGIN_REDIRECT_URL。刷新后我成功了。
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
更新 使用allauth进行帐户注册时会出现同样的问题。 url accounts / signup /是一个需要刷新的空白页面,以便重定向到包含注册表单的实际模板。我还没有解决它。
答案 0 :(得分:0)
原来,jquery-mobile将过渡css放在最顶层的容器上并更改背景颜色。因此,禁用它解决了获取空白页面的问题。页面内容在那里,只是jquery-mobile没有删除它的过渡css。
为什么没有allauth重定向?在一种情况下,因为表单包含jquery-mobile使用ajax处理但未显示的错误(甚至在删除转换css之后)。
我决定停止使用jquery-mobile工作,也许我会回到它,但现在不行。