成功登录后,django admin重定向

时间:2014-02-05 18:02:29

标签: django django-admin

我使用的是Django = 1.6.1。

目前在我的项目中,管理员系统在成功进行管理员登录后将我带到管理仪表板(即:localhost:8000 / admin /)。从这里我可以访问我的大多数应用程序,如用户,类别,组等。

90%的时间我想访问用户管理页面(即localhost:8000 / admin / my_project / users /)。因此,我试图找到一种方法将管理员登录重定向到管理员用户页面而不是仪表板。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:0)

我不知道这是解决这个问题的正确方法,但这就是我解决问题的方法。

我创建了一个名为AdminSite的{​​{1}}子类,并覆盖了CustomAdminSite以使用REDIRECT_FIELD_NAME接受重定向网址(即使用'下一个'隐藏字段选项)。

login()
在urls.py中

class CustomAdminSite(AdminSite):
    @never_cache
    def login(self, request, extra_context=None):
        """
        Displays the login form for the given HttpRequest.
        """
        from django.contrib.auth.views import login
        context = {
            'title': _('Log in'),
            'app_path': request.get_full_path(),
            REDIRECT_FIELD_NAME: settings.ADMIN_LOGIN_REDIRECT_URL,
        }
        context.update(extra_context or {})

        defaults = {
            'extra_context': context,
            'current_app': self.name,
            'authentication_form': self.login_form or AdminAuthenticationForm,
            'template_name': self.login_template or 'admin/login.html',
        }
        return login(request, **defaults)  

site = CustomAdminSite()
在settings.py

admin.site.login = path.to.custom.site.login
P.S:请告诉我是否有更好的方法:)

答案 1 :(得分:0)

当前在Django(从1.8版开始)上,您可以reverse your admin urls重定向到任何管理页面。

例如:

  • 您要重定向到的网址:/admin/my_project/users/

  • 引用:href="{% url 'admin:app_list' 'app_name' %}

  • 实现:href="{% url 'admin:app_list' 'users' %}

假设您的MyUser应用程序中只有一个模型users,则可以直接进入该模型的管理列表视图。

  • 参考:href="{% url 'admin:app_label_model_name_changelist' %}

  • 实现:href="{% url 'admin:users_myuser_changelist' %}

答案 2 :(得分:-1)

您可以通过覆盖'admin:index'网址(管理名称空间中名为'index'的网址)来实现。