Django:将管理员注销重定向到 allauth 登录

标签 django django-admin django-authentication django-allauth

我正在使用 django-allauth 登录页面将用户登录到我的管理面板。这工作正常,但是当他们从管理面板注销时,我希望他们被直接发送回/accounts/login/页面( 最好是/accounts/login/?next=/admin/surveys/survey/ ),而不是/admin/logout/页面上写着“感谢您在网站上度过的美好时光”。我在我的设置文件中尝试了 LOGOUT_URL 属性,但它似乎没有做我上面描述的事情。这是我的一些相关代码:

# urls.py

from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView

from mysite import views

from django.contrib import admin
admin.autodiscover()

from django.contrib.auth.decorators import login_required
admin.site.login = login_required(admin.site.login)

from django.contrib.auth import views as auth_views

urlpatterns = patterns('',
    url(r'^$', TemplateView.as_view(template_name='landingpage.html'), name='landingpage'),
    url(r'^surveys/', include('surveys.urls', namespace="surveys")),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^submitfeedback/$', views.submitfeedback, name='submitfeedback'),

    # tried this but it didn't work: url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/accounts/login/'}),
    # tried this but it didn't work: url(r'^admin/logout/$', 'django.contrib.auth.views.logout', {'next_page': '/accounts/login/'}),

    ## below for django-allauth
    url(r'^accounts/', include('allauth.urls')),
)

# settings.py

LOGIN_REDIRECT_URL = "/admin/surveys/survey/"
LOGOUT_URL = "/accounts/login/"

最佳答案

我认为最简单的方法不是在 views.py 中而是在模板本身中。您要做的是将 admin/base.html 文件(在 Github here 上看到)复制到您的项目模板文件夹中——然后您可以根据需要覆盖该文件夹。该模板具有由其余部分继承的所有标题信息管理模板。找到以下行:

<a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>

并简单地将其更改为:
<a href="{% url 'account_logout' %}">{% trans 'Log out' %}</a>

它现在应该遵循网站其余部分的 allauth 注销格式。

关于Django:将管理员注销重定向到 allauth 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24843875/

相关文章:

django - Django 中的“function”对象没有属性 'user' 错误?

python - 在模板中指定 Django CMS 占位符类型(文本、图片、链接)

django - 获取 Django 中 IntegerChoices 对象的值?

django - 使用 "other authentication sources"时可以避免创建 Django auth.model.User 表吗?

python - 处理上传图片 django admin python

django - 添加新项目时,默认 ='False' 不会反射(reflect)在 django admin BooleanField 中

django - 我可以在不破坏任何内容的情况下将Django的auth_user.username字段更改为100个字符吗?

python - Django 无法进行日期时间比较

python - Django F 似乎不起作用?

python - 如何在django中列出用户不属于的所有组?