将请求重定向到管理界面

Sim*_*mon 9 django django-urls django-admin

启用管理员界面并启动开发Web服务器(例如128.0.0.1:8000)后,我可以访问管理界面

128.0.0.1:8000/admin.
Run Code Online (Sandbox Code Playgroud)

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

url(r'^admin/', include(admin.site.urls)).
Run Code Online (Sandbox Code Playgroud)

我有什么要自动将128.0.0.1:8000/上的请求重定向到128.0.0.1:8000/admin?

URL命名空间

url(r'^$/', include(admin.site.urls))
Run Code Online (Sandbox Code Playgroud)

似乎不是解决方案.

Mar*_*mro 16

使用RedirectView.您可以使用硬编码URL,而不是reverse管理视图的名称.

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

url(r'^$', RedirectView.as_view(url=reverse('admin:index')))
Run Code Online (Sandbox Code Playgroud)

  • 我不得不使用`reverse_lazy`而不是[reverse]中提到的`reverse`(http://stackoverflow.com/a/24680788/1797912).否则我得到一个'ImproperlyConfigured`错误("包含的urlconf [...] .urls中没有任何模式"). (7认同)

小智 11

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),
]
Run Code Online (Sandbox Code Playgroud)


Yuj*_*ita 8

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

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


小智 5

您还可以使用路径代替 url,后者已被弃用并且在 Django 4 中不再可用。

from django.views.generic.base import RedirectView

urlpatterns = [
    path('', RedirectView.as_view(url='/admin')),
    path('admin/', admin.site.urls),
    ...
] 
Run Code Online (Sandbox Code Playgroud)