将请求重定向到管理界面

Posted

技术标签:

【中文标题】将请求重定向到管理界面【英文标题】:Redirect request to admin interface 【发布时间】:2012-02-22 15:10:07 【问题描述】:

启用管理员界面并启动 开发网络服务器,例如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))

似乎不是解决方案。

【问题讨论】:

天哪。发现错误。它的“ url(r'^$', include(admin.site.urls)) ”。单个正斜杠是导致错误的原因。花太多时间在这上面。谢谢丹尼尔。 url('', admin.site.urls), in urlpatterns 为我工作:) 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

使用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')))

【讨论】:

我必须使用reverse_lazy 而不是reverse 中提到的this answer。否则我会收到 ImproperlyConfigured 错误(“包含的 urlconf [...].urls 中没有任何模式”)。【参考方案3】:

这对我有用。 reverse_lazy 没有。

Django 1.8.1 及以上版本

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

【讨论】:

【参考方案4】:

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

from django.shortcuts import redirect

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

【讨论】:

在 django 2 中:path('', lambda _: redirect('admin:index'), name="index") 同意以上对 Django 2.1 的评论。我使用了重定向导入,然后使用了 path('', lambda _: redirect('admin:index'), name="index") 如果在 url 列表末尾添加了逗号,请不要忘记在末尾添加逗号! 【参考方案5】:

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),
]

【讨论】:

以上是关于将请求重定向到管理界面的主要内容,如果未能解决你的问题,请参考以下文章

如何在获取 post 调用后管理重定向请求

SpringMVC框架如何实现请求转发和重定向呢?

使用 Java Undertow 服务器将 HTTPS 请求重定向到 HTTP?

IIS:如何将一个页面的请求重定向到另一个页面?

Nginx反向代理:将所有http请求重定向到https

如何将所有 https 请求重定向到 https