【变量规则,HTML 转义,非法导入名称】flask 框架总结(三)
flask 框架总结
要给 URL 添加变量部分,可以把特殊字段标记为<variable_name>,这部分将会作为命令参数传递到函数。规则可以用 converter:variable_name 指定一个可选的转换器
可以转类型,三个类型 int 、 float 、path
HTML 转义
当返回 HTML ( Flask 中的默认响应类型)时,为了防止注入攻击,所有用户提 供的值在输出渲染前必须被转义。使用 Jinja (这个稍后会介绍)渲染的 HTML 模板会自动执行此操作。
在下面展示的 escape() 可以手动转义。因为保持简洁的原 因,在多数示例中它被省略了,但您应该始终留心处理不可信的数据。
如果一个用户想要提交其名称为 <script>alert("bad")</script>
,那么 宁可转义为文本,也好过在浏览器中执行脚本。
路由中的 <name>
从 URL 中捕获值并将其传递给视图函数。
唯一的 URL / 重定向行为
以下两条规则的不同之处在于是否使用尾部的斜杠。:
projects 的 URL 是中规中矩的,尾部有一个斜杠,看起来就如同一个文件 夹。访问一个没有斜杠结尾的 URL ( /projects )时 Flask 会自动进行重 定向,帮您在尾部加上一个斜杠( /projects/ )。
about 的 URL 没有尾部斜杠,因此其行为表现与一个文件类似。如果访问这 个 URL 时添加了尾部斜杠(/about/
)就会得到一个 404 “未找到” 错 误。这样可以保持 URL 唯一,并有助于搜索引擎重复索引同一页面。
非法导入名称
FLASK_APP 环境变量中储存的是模块的名称,运行 flask run 命令就 会导入这个模块。如果模块的名称不对,那么就会出现导入错误。出现错误的时机是在 应用开始的时候。如果调试模式打开的情况下,会在运行到应用开始的时候出现导入 错误。出错信息会告诉您尝试导入哪个模块时出错,为什么会出错。
最常见的错误是因为拼写错误而没有真正创建一个 app 对象。
flask 默认采用是 jinja2 模板进行模板渲染,jinja2 是 python 第三方的一个模板渲染模块,通常用于 flask,tornado 框架中,jinja2 的开发大量参考了 django 的模板渲染系统,相似度达到 98%
版权声明: 本文为 InfoQ 作者【黎燃】的原创文章。
原文链接:【http://xie.infoq.cn/article/91f24622e5399f0a22ddcac23】。文章转载请联系作者。
评论