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

1 投票
2 回答
1453 浏览
提问于 2025-04-18 08:00

我想在应用的视图(其实是控制器)中,不直接写死应用的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 目录下。但是在生产环境(或者其他地方),它可能会安装在任何子目录或者 html/ 下。

我想知道怎么才能重定向到主页,因为如果这个特定的页面出错了,主页会更好地显示出发生了什么问题(比如数据库中缺少资源、表格没有导入等等)。

我想做类似这样的事情:

return redirect(<magic>.main.index) 

或者甚至像这样:

return redirect(APP_ROOT)

我找到的所有例子都是在 HTML 模板中进行重定向,而不是在 view.py 代码中。

有没有什么想法?

2 个回答

0

你需要编辑两个文件,分别是 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'

把 my_app 替换成你正在使用的 Django 应用的名字(比如 polls)。

这段代码的作用是把请求引导到你 views.py 文件里的代码。

注意:如果你希望这个视图不仅在 500 和 404 错误时进行重定向,你还需要把其他地方指向这个视图。

0

你试过吗?

return HttpResponseRedirect("/")

撰写回答