Django 错误重定向到主页或应用根目录
我想在应用的视图(其实是控制器)中,不直接写死应用的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("/")