作为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 %}
答案 0 :(得分:3)
Flask是一个框架,幕后有很多代码(尤其是werkzeug
),它完成所有请求处理,然后调用你的视图函数,然后准备一个完整的响应。
所以答案是,Python不知道URL,但Flask会使用name
(覆盖默认None
)或不使用它来调用您的视图函数。
视图函数的name
变量以相同的名称传递给模板。这是这一行中的两个name
:
return render_template('hello.html', name=name)