我可以使用以下网址提供的登录页面:/admin
供编外用户登录吗?我在我的 django 设置文件中使用以下设置:
LOGIN_URL = '/admin/'
LOGIN_REDIRECT_URL = '/'
当我登录时,它不会将我重定向到根文件夹。我做对了吗?
注意:我@login_required
在我的视图上使用装饰器。
编辑
它使用以下 URL 将我登录到管理站点:http://127.0.0.1:8000/admin/?next=/
我可以使用以下网址提供的登录页面:/admin
供编外用户登录吗?我在我的 django 设置文件中使用以下设置:
LOGIN_URL = '/admin/'
LOGIN_REDIRECT_URL = '/'
当我登录时,它不会将我重定向到根文件夹。我做对了吗?
注意:我@login_required
在我的视图上使用装饰器。
编辑
它使用以下 URL 将我登录到管理站点:http://127.0.0.1:8000/admin/?next=/
非员工成员无法通过管理员视图登录,因此您不能。
有一个 Django 视图可以满足您的需要,但是: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
您只需要为要使用的视图定义一个模板,默认情况下,它应该位于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',
})),
]
使用 Django 1.6,我可以使用 django 自己的管理员登录模板和以下设置。然后当我打开“/”时,它会将我重定向到登录屏幕,登录后它会将我发送回“/”
设置.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'core',
'south',
)
LOGIN_URL = '/login'
网址.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.contrib.auth.views import login
admin.autodiscover()
urlpatterns = patterns(
'',
url(r'^', include('core.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^login/$', login, {'template_name': 'admin/login.html'})
# I didn't create this 'admin/login.html' template
# Django will use the one from the admin application ;-)
)
核心/urls.py
from django.conf.urls import patterns, url
urlpatterns = patterns(
'core.views.web_views',
url(r'^$', 'home'),
)
核心/视图/web_views.py
from django.shortcuts import render_to_response
from django.template.context import RequestContext
__author__ = 'tony'
from django.contrib.auth.decorators import login_required
@login_required
def home(request):
return render_to_response('home.html', {}, context_instance = RequestContext(request))