如何在Django中重定向(包括URL更改)?

时间:2016-01-11 13:27:01

标签: python django django-views django-urls

我创建了一个index.html。我希望当有人前往viewhttp://www.mypage.com/时显示此页面(或http://www.mypage.com/index/)。由于我是Django的新手,这可能是一个糟糕的方式: 在我的 URLS.PY:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$',views.index),
    url(r'^index/$',views.index),...
    ...

这很正常,但我很好奇,当有人去url时,是否可以将http://www.mypage.com/http://www.mypage.com/index/更改为http://www.mypage.com/

我已经尝试过改变这个:

url(r'^$',views.index),

到此:

url(r'^$','/index/'),

但它会引发错误:

Could not import '/index/'. The path must be fully qualified.

有人可以给我一个建议吗?

2 个答案:

答案 0 :(得分:9)

如果你想通过代码来实现它:

from django.http import HttpResponseRedirect

def frontpage(request):
    ...
    return HttpResponseRedirect('/index/')

但您也可以直接在网址规则中执行此操作:

from django.views.generic import RedirectView

urlpatterns = patterns('',
    (r'^$', RedirectView.as_view(url='/index/')),
)

供参考,请参阅此帖:https://stackoverflow.com/a/523366/5770129

答案 1 :(得分:2)

您可以做的是以下内容。把它放在你的urls.py中:

url(r'^$',views.redirect_index),

并在您的观点中:

def redirect_index(request):
    return redirect('index')