这是一个创建于 4253 天前的主题,其中的信息可能已经有所发展或是发生改变。
请教:Flask url_for 的 build error
===
最近业余时间写一个 flask 的网站
我所有的 URL RULE 全部写在 `init_route.py` 里面了,其中有个一带参数的 url 规则是:
from subject import view_subject
app.add_url_rule('/all_subjects/<subject_id>', 'subject', view_subject, methods=['GET', 'POST'])
然后我在另一个 view 的响应函数中最后返回:
return redirect(url_for('view_subject', subject_id = str(subject_id)))
然后报错说: BuildError: ('view_subject', {'subject_id': '2'}, None)
但是注意,view_subject 这个 view 在之前的流程中是有正常显示过的,只是没有用 url_for 来调用。我不理解,这和我在 `init_route.py` 中以 `add_url_rule` 定义相应函数而不是用 decorator 修饰有关吗?可是,以我的理解,decorator 只能定义想用函数的正上方加上才可以,可是我的响应函数和 `init_route.py` 不在一个文件,也不该在一个文件。我记得之前在 jinja template 中也出现类似参数的 `url_for` 调用失败,最后我不得不手动拼接 URL。
flask 自己给的例子全是用 decorator,而 flask 关于 `url_for` 的官方文档也没有让我能明白的例子,
例如,如果我的 URL 有三个参数:
from form import display_block
app.add_url_rule('/all_subjects/<subject_id>/<block_name>/<mode>', 'block', display_block)
以上的 url 我在 jinja template 中是用手动拼接来相应的。
真郁闷
求大神帮帮 我感觉我可能有那个常识性的东西没搞
3 条回复 • 1970-01-01 08:00:00 +08:00
|
|
1
Hualin 2013-02-09 10:00:20 +08:00
辞旧迎新,大家蛇年吉祥喽~~~~
|
|
|
3
Hualin 2013-02-11 19:31:44 +08:00
搞定啦
真的很感谢;大年初二真给力! 我把 endpoint 和 view_func 这两个概念给搞混了。 end_point 是 static 里面的 HTML 页
|