Django将错误重定向到主主页或应用程序根目录

时间:2014-05-29 23:02:20

标签: python django redirect

我试图不在应用程序的视图(实际上是控制器)中硬编码应用程序的URL。

代码如下所示:

event/view.py

def index(request):

  try:
    //do stuff with response
    return render(request, 'rma/service.html', response)
  except:
    return redirect("/rma")

在这种情况下,应用程序安装在/ var / www / html / rma下的Web服务器上。但是在生产(或其他任何地方),它可以安装在任何子目录或html /

如何重定向到主页面,因为如果此特定页面失败,主页面将显示更好的逻辑(数据库中缺少的数据源,未导入的表格等)

我喜欢做类似的事情:

return redirect(<magic>.main.index) 

甚至喜欢:

return redirect(APP_ROOT)

我发现的所有示例都是在html(模板)中重定向,而不是在view.py中的代码中重定向

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你尝试过吗?

return HttpResponseRedirect("/")

答案 1 :(得分:0)

您需要编辑2个文件,website / urls.py和views.py

在views.py中:

def handler404(request):
    return HttpResponseRedirect('')


def handler500(request):
    return HttpResponseRedirect('')

这定义了出现错误时要执行的操作,并且可以将代码更改为具有自定义错误页面。

在urls.py中:

handler404 = 'my_app.views.handler404'
handler500 = 'my_app.views.handler500'

用你正在使用的任何Django应用程序替换my_app(例如民意调查。)

此代码将代码定向到views.py文件中的代码。

注意:如果您希望它不仅仅重定向500和404错误,还需要将其他内容指向此视图。