欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  前面几篇的内容我们还没涉及视图模板的使用,下面我们简单介绍怎么使用,详细的内容可以参考官方的文档获取更多内容。
 
  官方文档地址:
 
  目录
 
  模板使用
 
  模板继承
 
  HTML自动转义
 
  Flask的模板功能是基于Jinja2模板引擎实现的。提供模板可以使用render_template()方法。
 
  这次我们返回的不再是字符串,而是render_template()方法的返回内容,第一个参数就是模板文件名,第二个参数是模板里面的变量内容,可以有多个变量,它们会在视图渲染的时候按需要显示在页面。
 
  Flask框架会自动查找templates文件夹里面对应的视图文件。
 
  如果应用只是一个模块:文件夹的结构会是这样的:
 
  /application.py
 
  /templates
 
  ? /hello.html
 
  如果是一个包,结构会是这样的:
 
  /application
 
  ? /__init__.py
 
  ? /templates
 
  ? /hello.html
 
  下面文章底部会提供一个登陆注册的例子,代码结构是使用蓝图模块化的写法,模板文件我统一放在壳工程的外面,所有模块都共用同一个templates文件夹。
 
  当然也可以使用模块里面的templates文件夹,只需在每个模块初始化Blueprint实例的时候指定文件夹路径就可以了:
 
  main_opt = Blueprint('main_opt', __name__, static_folder="", template_folder="")
 
  蓝图实现模块化会在后面介绍。
 
  ?
 
  下面看一下模板文件的写法
 
  hello.html 内容如下:
 
  模板里面可以访问request,session和g实例对象,甚至是get_flashed_messages()函数。
 
  表达式的写法:{{表达式}}
 
  动态代码块写法:
 
  {% if name %}
 
  ? <h1>Hello {{ name }}!</h1>
 
  {% else %}
 
  ? <h1>Hello, World!</h1>
 
  {% endif %}
 
  如果你要把一个页面通用的内容抽出来,其它页面只要继承它,然后在里面填充不同的内容就可以实现重用。
 
  例如把页头标题栏跟页尾的内容抽出来单独一个文件base.html
 
  base.html 相当于一个页面的框架,只需填入内容。需要插入内容的位置使用block标记
 
  在需要标题栏的页面{% extends 'base.html'%}就可以了,然后填入自己的内容。
 
  自动转义默认是开启的,如果输入的内容包含一些特殊的代码自动转义很容易造成HTML注入攻击。使用Markup类可以避免自动转义处理。
 
  下面是一个在返回字符串的转义例子
 
  页面会输出”Hello Flask”字样,而且”Flask”是斜体的,因为我们加了<em>标签。
 
  如果不想自动转义可以这样写:
 
  现在页面只会显示”Hello <em>Flask</em>”

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h61032.shtml