当我访问注销链接时,即使我在设置上设置了LOGOUT_REDIRECT_URL,它也仅在我单击POST按钮时才有效注销,并且也不会重定向到正确的页面。是否有一种方法可以注销而无需手动单击POST按钮?
我尝试更改默认身份验证类和权限类的设置。还建立了一个新项目,在该项目上,它运行良好。我的User类是django.contrib.auth.models中的AbstractUser。
我还试图使不输入任何内容的表单向我的注销页面发出POST请求,它只是将我重定向到LOGOUT_REDIRECT_URL页面,而不会破坏用户会话。
我的设置:
LOGOUT_REDIRECT_URL = '/'
LOGIN_REDIRECT_URL = '/'
LOGIN_URL = 'http://127.0.0.1:8000/auth/login/'
LOGOUT_URL = 'http://127.0.0.1:8000/auth/logout/'
# Application definition
INSTALLED_APPS = [
# apps templated
'django_adminlte',
'django_adminlte_theme',
# usual apps
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_cron',
'django_extensions',
'django_filters',
# Libs
'rest_framework',
'rest_framework.authtoken',
'rest_auth',
'django.contrib.sites',
'allauth',
'allauth.account',
'rest_auth.registration',
'sass_processor',
'corsheaders',
# Custom apps
'bankaccount.apps.BankaccountConfig',
'blog.apps.BlogConfig',
'bitcoin.apps.BitcoinConfig',
'users.apps.UsersConfig',
'wallets.apps.WalletsConfig',
]
...
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'arbitrage.pagination.SimplePagination',
'PAGE_SIZE': 100,
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
}
我的注销按钮:
<form action="{% block logout_url %}{% logout_url %}{% endblock %}" method="POST" enctype="multipart/form-data">
<div class="pull-right">
<a href="" class="btn btn-default btn-flat">Log out</a>
</div>
</form>
如果给定用户登录,则预期结果应该是他单击屏幕顶部的注销按钮(此按钮将重定向到注销页面)时注销该用户