render_template中的flask参数

时间:2016-08-16 09:30:08

标签: python methods flask

作为hello函数参数的名称被赋予None,但为什么render_template中的名称将采用名称的值(如果在url中提供)?基本上我的问题是Python如何知道哪个名称是None以及哪个名称在url中给出?

 from flask import render_template
 @app.route('/hello')
 @app.route('/hello/<name>')
 def hello(name=None):
      return render_template('hello.html', name=name)

hello.html是:

<!doctype html>
<title>Hello from Flask</title>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello, World!</h1>
{% endif %}

1 个答案:

答案 0 :(得分:3)

Flask是一个框架,幕后有很多代码(尤其是werkzeug),它完成所有请求处理,然后调用你的视图函数,然后准备一个完整的响应。

所以答案是,Python不知道URL,但Flask会使用name(覆盖默认None)或不使用它来调用您的视图函数。

视图函数的name变量以相同的名称传递给模板。这是这一行中的两个name

return render_template('hello.html', name=name)