在启用管理员界面并启动开发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命名空间
url(r'^$/', include(admin.site.urls))
似乎不是解决方案。
使用RedirectView
。您可以使用reverse
和管理视图的名称,而不是硬编码URL。
from django.core.urlresolvers import reverse
from django.views.generic.base import RedirectView
url(r'^$', RedirectView.as_view(url=reverse('admin:index')))
你说你想要一个重定向,所以你会使用django的RedirectView
from django.views.generic.base import RedirectView
url(r'^$', RedirectView.as_view(url='/admin'))
这适合我。 reverse_lazy
没有。
Django 1.8.1及以上版本
urlpatterns = patterns('',
url(r'^$', lambda x: HttpResponseRedirect('/admin')),
)
以前的解决方案要么显示重定向到硬编码的URL,要么使用在此处不起作用的方法。这个在Django 1.9中工作,并重定向到管理索引视图:
from django.shortcuts import redirect
urlpatterns = patterns('',
url(r'^$', lambda _: redirect('admin:index'), name='index'),
)
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),
]