django 用户注销时重定向到管理页面的解决方法


用户登录和注销

使用django自带的认证系统django.contrib.auth时,默认的认证视图会在templates下的registration文件夹中查找模板,

其中登录模板为login.html,注销模板为logged_out.html

出现问题:

两模板继承自同一base.html,登录继承有效,但注销页面重定向到了Django管理页面。

登录页面:

注销页面:

解决方法

https://stackoverflow.com/questions/15467831/django-logout-redirects-me-to-administration-page

尝试了其中一种方法:

  1. Make sure your app comes before django.contrib.admin under installed apps in settings.py.

创建应用配置settings.py中的INSTALLED_APPS时,应用名如users应该放在django.contrib.admin应用之前。

# mysite/settings.py
INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'learning_logs',
    'users',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
  1. Make sure your template is called logged_out.html.

注销页面的模板名称为logged_out.html

修改后效果