📅  最后修改于: 2021-01-02 04:27:15             🧑  作者: Mango
在前面的示例中,我们返回了简单字符串作为view函数的响应。虽然,flask帮助我们以HTML模板的形式返回响应。在本教程的这一部分中,我们将介绍从Web应用程序返回HTML响应的方法。
以下烧瓶脚本包含一个视图函数,即与URL'/'关联的message()。它没有返回简单的纯字符串作为消息,而是返回了使用HTML附加了
script.py
from flask import *
app = Flask(__name__)
@app.route('/')
def message():
return "Hi, welcome to the website
"
if __name__ == '__main__':
app.run(debug = True)
Flask使我们能够呈现外部HTML文件,而不是在视图函数对HTML进行硬编码。在这里,我们可以利用烧瓶所基于的jinja2模板引擎。
Flask为我们提供了render_template()函数,该函数可用于呈现外部HTML文件,以作为来自view函数的响应返回。
考虑以下示例。
要通过view函数呈现HTML文件,首先让我们创建一个名为message.html的HTML文件。
message.html
Message
hi, welcome to the website
script.py
from flask import *
app = Flask(__name__)
@app.route('/')
def message():
return render_template('message.html')
if __name__ == '__main__':
app.run(debug = True)
在这里,我们必须在应用程序目录中创建文件夹模板,并将烧瓶脚本中引用的HTML模板保存在该目录中。
在我们的例子中,脚本文件script.py的路径为E:\ flask,而HTML模板的路径为E:\ flask \ templates 。
应用目录
Jinga 2模板引擎提供了一些定界符,可在HTML中使用这些定界符以使其能够动态表示数据。模板系统提供了一些HTML语法,这些语法是变量和表达式的占位符,这些变量和表达式在呈现模板时被其实际值替换。
jinga2模板引擎提供以下定界符以从HTML中转义。
考虑以下示例,其中使用{{…}}分隔符在HTML脚本中显示URL的可变部分。
message.html
Message
hi, {{ name }}
script.py
from flask import *
app = Flask(__name__)
@app.route('/user/')
def message(uname):
return render_template('message.html',name=uname)
if __name__ == '__main__':
app.run(debug = True)
URL http:// localhost:5000 / user / admin的可变部分在HTML脚本中使用{{name}}占位符显示。
由于HTML是一种标记语言,并且仅用于设计目的,因此有时在Web应用程序中,我们可能需要执行用于通用计算的语句。为此,Flask为我们简化了定界符{%…%},该定界符可用于将简单的Python语句嵌入HTML。
在下面的示例中,我们将printURL中指定的数字表,即URL http:// localhost:5000 / table / 10将在浏览器窗口中print10的表。
在这里,我们必须注意,for循环语句包含在{%…%}分隔符内,而循环变量和数字包含在{{…}}占位符内。
script.py
from flask import *
app = Flask(__name__)
@app.route('/table/')
def table(num):
return render_template('print-table.html',n=num)
if __name__ == '__main__':
app.run(debug = True)
打印表
print table
printing table of {{n}}
{% for i in range(1,11): %}
{{n}} X {{i}} = {{n * i}}
{% endfor %}
诸如CSS或JavaScript文件之类的静态文件可增强HTML网页的显示。 Web服务器配置为从包中或模块旁边的静态文件夹中提供此类文件。静态文件位于应用程序的路径/ static处。
在以下示例中,flask脚本返回HTML文件,即message.html ,该文件使用样式表style.css设置样式。 flask模板系统在static / css目录下找到静态CSS文件。因此,style.css将保存在指定路径中。
script.py
from flask import *
app = Flask(__name__)
@app.route('/')
def message():
return render_template('message.html')
if __name__ == '__main__':
app.run(debug = True)
message.html
Message
hi, welcome to the website
style.css
body {
background-color: powderblue;
}
h1 {
color: blue;
}
p {
color: red;
}