求助如何在 flask 中访问未定义的 url 时重定向到其他页面?

2014-07-17 20:23:31 +08:00
 forreal
假如我定义了一个url为/<int:id>,而没有定义/<string>.
此时我访问/abc,会出现错误,生产模式下会报500错误
如何写才能在访问不存在的url 时返回404?
8117 次点击
所在节点    Python
10 条回复
ccbikai
2014-07-17 20:35:31 +08:00
@app.errorhandler(404)
def page_not_found(error):
return render_template('page_not_found.html'), 404

http://docs.jinkan.org/docs/flask/quickstart.html#id15
P9
2014-07-17 20:37:10 +08:00
访问不存在的 不就是返回404的么。 我估计你这个是进到/<int:id>里了
forreal
2014-07-17 20:42:23 +08:00
@ccbikai
我指的是访问未定义的url 时如何跳转,不是如何设置错误页面,可能是我没说明白
20150517
2014-07-17 20:43:40 +08:00
@forreal 自己在这个def下写个跳转逻辑不就可以了,一个原理啊
forreal
2014-07-17 20:44:34 +08:00
@P9
可是确实没返回404,我也很奇怪。可是id 被我限定为 int了啊
skybr
2014-07-17 20:47:02 +08:00
看你app的错误日志, 没匹配就是404, 500是程序哪里出错了.
forreal
2014-07-17 20:47:30 +08:00
@20150517
就是说不用<int:id>,所有的都用<id>,然后在函数内部自己判断?
感觉提供了<int:id>这种形式,不用太可惜了
forreal
2014-07-17 20:54:17 +08:00
@ccbikai
@P9
@20150517
@skybr
感谢各位,根据skybr的提醒,我重建一个工程,然后重新做了一个实验,发现是Not Found.
可能是我哪里写错了
arcas
2014-07-17 21:14:54 +08:00
报500 是你程序问题,,
forreal
2014-07-17 22:18:12 +08:00
@arcas
是的,我写的一个装饰器函数出的问题。
装饰器中传入的view函数应该写成func(*args,**kwargs),而我之前以为装饰器函数不需要位置参数,写成了func(**kwargs)。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/123192

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX