tornado get_argument 代码

2012-10-02 15:28:40 +08:00
 fire5
def get_argument(self, name, default=_ARG_DEFAULT, strip=True):
"""Returns the value of the argument with the given name.

If default is not provided, the argument is considered to be
required, and we throw an HTTP 400 exception if it is missing.

If the argument appears in the url more than once, we return the
last value.

The returned value is always unicode.
"""
args = self.get_arguments(name, strip=strip)
if not args:
if default is self._ARG_DEFAULT:
raise HTTPError(400, "Missing argument %s" % name)
return default
return args[-1]

这个如果不设默认值,如果获取失败会抛出异常,感觉合理吗?
6121 次点击
所在节点    Python
8 条回复
fire5
2012-10-02 15:31:04 +08:00
如果获取失败会抛出异常,是指 表单中的元素 没有value。
fire5
2012-10-02 15:32:21 +08:00
在问一个问题 {{ message }} 如果没有设置 将会出现 gloable namespce ’message‘ not define 的异常,
这合理吗?
fire5
2012-10-02 18:24:02 +08:00
stack overfollow 给出的答案:
{% try %}
{% if message %}
Oops! The logout failed. Please close all open documents and try again
{% end %}
{% except %}
{% end %}


http://stackoverflow.com/questions/10139341/handling-an-undefined-template-variable-in-tornado
fire5
2012-10-02 18:24:20 +08:00
相当土鳖啊
fire5
2012-10-02 19:08:02 +08:00
请问 有什么好的 解决方法吗?
messense
2012-10-02 21:06:26 +08:00
@fire5 调用 self.render 的时候不论提交没提交 POST 都把要传入模板的变量传入,初始值为空呗。
fire5
2012-10-02 21:59:10 +08:00
嗯 我也是这么做了 不过感觉还是很土鳖啊
如果 这样
{% if message %}
{{ message }}
{% end %}
如果传入模版中没有 则为None,然后用 if 做处理 感觉会平滑一点
fire5
2012-10-02 22:00:03 +08:00
感谢 @messense

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

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

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

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

© 2021 V2EX