请问flask中如何获取html中的select标签的值_Flask:模板(一)

摘自《Flask Web开发实战:入门、进阶与原理解析(李辉著 )》把HTML代码存储在单独的文件中,以便让程序的业务逻辑和表现逻辑分离,即控制器和用户界面的分离。在动态Web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成。借助模板引擎,我们可以在HTML文件中使用特殊的语法来标记出变量,这类包含固定内容和动态部分的可重用文件称为模板(template)。模板引擎...
摘要由CSDN通过智能技术生成

摘自《Flask Web开发实战:入门、进阶与原理解析(李辉著 )》

把HTML代码存储在单独的文件中,以便让程序的业务逻辑和表现逻辑分离,即控制器和用户界面的分离。

在动态Web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成。借助模板引擎,我们可以在HTML文件中使用特殊的语法来标记出变量,这类包含固定内容和动态部分的可重用文件称为模板(template)。

模板引擎的作用就是读取并执行模板中的特殊语法标记,并根据传入的数据将变量替换为实际值,输出最终的HTML页面,这个过程被称为渲染(rendering)。

Flask默认使用的模板引擎是Jinja2,除了设置变量,还允许我们在模板中添加if判断,执行for迭代,调用函数等,以各种方式控制模板的输出。对于Jinja2来说,模板可以是任何格式的纯文本文件,比如HTML、XML、CSV、LaTeX等。

定界符

在模板中添加Python语句和表达式时,我们需要使用特定的定界符把它们标示出来。

语句,比如if判断、for循环等:

{% ... %}

表达式,比如字符串、变量、函数调用等:

{
    { ... }}

注释

{# ... #}

另外,在模板中,Jinja2支持使用“.”获取变量的属性,比如user字典

中的username键值通过“.”获取,即user.username,在效果上等同于

user['username']。

在模板中使用的←是我们第2章提及的HTML实体。HTML实

体除了用来转义HTML保留符号外,通常会被用来显示不容易通过键盘

输入的字符。这里的←会显示为左箭头,另外,我们还经常使用

©来显示版权标志,你可以访问https://dev.w3.org/html5/htmlauthor/

charref查看所有可用的HTML实体。

模板语法

利用Jinja2这样的模板引擎,我们可以将一部分的程序逻辑放到模板中去。需要注意的是,Jinja2并不支持所有Python语法。而且出于效率和代码组织等方面的考虑,我们应该适度使用模板,仅把和输出控制有关的逻辑操作放到模板中。

Jinja2允许你在模板中使用大部分Python对象,比如字符串、列表、字典、元组、整型、浮点型、布尔值。它支持基本的运算符号(+、-、*、/等)、比较符号(比如==、!=等)、逻辑符号(and、or、not和括号)以及in、is、None和布尔值(True、False)。

Jinja2提供了多种控制结构来控制模板的输出,其中for和if是最常用的两种。在Jinja2里,语句使用{%...%}标识,尤其需要注意的是,在语句结束的地方,我们必须添加结束标签:

{% if user.bio %}
    <i>{
    { user.bio }}</i>
{% else %}
    <i>This user has not provided a bio.</i>
{% endif %}

和在Python里一样,for语句用来迭代一个序列:

<ul>
    {% for movie in movies %}
    <li>{
    { movie.name }} - {
    { movie.year }}</li>
    {% endfor %}
</ul>

在for循环内,Jinja2提供了多个特殊变量:

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值