9

我可以使用以下网址提供的登录页面:/admin供编外用户登录吗?我在我的 django 设置文件中使用以下设置:

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

当我登录时,它不会将我重定向到根文件夹。我做对了吗?

注意:我@login_required在我的视图上使用装饰器。

编辑

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

4

2 回答 2

15

非员工成员无法通过管理员视图登录,因此您不能。

有一个 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',
            })),
]
于 2012-05-23T14:00:16.530 回答
7

使用 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))
于 2014-06-04T13:30:49.580 回答