我可以使用位于 /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/