将请求重定向到管理界面

时间:2012-01-30 20:34:15

标签: django django-admin django-urls

启用管理员界面并启动后 例如,开发Web服务器128.0.0.1:8000,我能够 到达管理界面

128.0.0.1:8000/admin.

显然是由于以下URL命名空间

url(r'^admin/', include(admin.site.urls)).

我必须自动将128.0.0.1:8000/上的请求重定向到128.0.0.1:8000/admin吗?

网址命名空间

url(r'^$/', include(admin.site.urls))

似乎不是解决方案。

5 个答案:

答案 0 :(得分:14)

使用RedirectView。您可以使用reverse和管理员视图的名称来代替硬编码网址。

from django.core.urlresolvers import reverse
from django.views.generic.base import RedirectView

url(r'^$', RedirectView.as_view(url=reverse('admin:index')))

答案 1 :(得分:7)

你说你想要一个重定向所以你会使用django的RedirectView

from django.views.generic.base import RedirectView
url(r'^$', RedirectView.as_view(url='/admin'))

答案 2 :(得分:3)

这对我有用。 reverse_lazy没有。

Django 1.8.1及以上

urlpatterns = patterns('',
    url(r'^$', lambda x: HttpResponseRedirect('/admin')),
)

答案 3 :(得分:3)

以前的解决方案要么显示重定向到硬编码的URL,要么使用在此处不起作用的方法。这个在Django 1.9中运行并重定向到管理索引视图

from django.shortcuts import redirect

urlpatterns = patterns('',
  url(r'^$', lambda _: redirect('admin:index'), name='index'),
)

答案 4 :(得分:0)

Django 2.0 及更高版本:

from django.contrib import admin
from django.urls import path, reverse_lazy
from django.views.generic.base import RedirectView


urlpatterns = [
    path('', RedirectView.as_view(url=reverse_lazy('admin:index'))),
    path('admin/', admin.site.urls),
]