python - 我们可以使用django中/admin的登录页面供自己使用吗?

标签 python django django-login

我可以使用位于 /admin 的登录页面供非员工用户登录吗?我在我的 Django 设置文件中使用了以下设置:

LOGIN_URL = '/admin/'
LOGIN_REDIRECT_URL = '/'

当我登录时,它不会将我重定向到根文件夹。我的做法是否正确?

注意:我在我的 View 中使用装饰器 @login_required

编辑

它使用以下 URL 登录管理站点:http://127.0.0.1:8000/admin/?next=/

最佳答案

非工作人员不能通过管理 View 登录,所以你不能。

有一个 Django View 可以完全满足您的需要,但是:django.contrib.auth.views.login

您可以轻松地将它添加到您的urlconf:

from django.contrib.auth.views import login

urlpatterns = ('',
    #snip
    url(r'^login/$', login)
)

查看文档以了解如何自定义其行为:https://docs.djangoproject.com/en/dev/topics/auth/#limiting-access-to-logged-in-users

您只需要为要使用的 View 定义一个模板,默认情况下,它应该位于 registration/login.html,但可以覆盖它。

更新

1) 对于 django 1.11+ 更好地使用 LoginView (即 from django.contrib.auth.views import LoginView)因为 login 代码实际上使用了 LoginView 而 login 的代码甚至有一个警告消息:

warnings.warn(
    'The login() view is superseded by the class-based LoginView().',
    RemovedInDjango21Warning, stacklevel=2
)

2) 您可能想要更改管理员登录页面的默认标题。这可以通过在上下文中提供 site_header 来完成。

更新后的版本看起来像这样:

from django.contrib.auth.views import LoginView

urlpatterns = [
   # your patterns here,
    url(r'^login/$',
        LoginView.as_view(
            template_name='admin/login.html',
            extra_context={
                'site_header': 'My custom header',
            })),
]

关于python - 我们可以使用django中/admin的登录页面供自己使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10721143/

相关文章:

python - 为什么我的 Python 代码在从另一个文件调用时添加随机单引号?

python - 我应该如何将这个又长又复杂的 PHP 样式 URL 查询字符串转换为 Django url?

django - 访问 django 测试中登录用户的 View

python - 如何使用 NDB map 生成游标

python - Tensorflow:索引中的 "staggered"序列掩码?

python - Django Sphinx 自动模块——基础知识

python - 为 Django 中的简单评论表单添加 CSRF 保护

python - 在 Django 中登录后将用户重定向到自定义链接

python - 在 Django 中使用电子邮件地址或用户名登录用户

python - 我正在寻找什么样的设计模式以及如何在 python 中实现它