标签:部分 完全 页面 database 出错 pos extends 继承 web开发
flask 框架下的jinja2模块引擎(1):https://www.cnblogs.com/chichung/p/9774556.html
flask 框架下的jinja2模块引擎(2):https://www.cnblogs.com/chichung/p/9775099.html
本文主要记录下 jinja2 的模板继承。
在模板中,可能会遇到以下情况:
像遇到这种情况,可以使用 JinJa2 模板中的 继承 来进行实现
模板继承是为了重用模板中的公共内容。一般Web开发中,继承主要使用在网站的顶部菜单、底部。这些内容可以定义在父模板中,子模板直接继承,而不需要重复书写。
例如有一个父模板 base.html 。有两个子模板01.html 和 02.html 都是继承该模板的某一部分。
base.html 如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{% block title %}Title{% endblock title %}</title> </head> <body> <p>父模板的头部,每个网页都一样的,不需要更改</p> {% block content %} <p>父模板的中间部分,每个网页都不一样的,需要更改</p> {% endblock content %} <p>父模板的脚部,每个网页都一样的,不需要更改</p> </body> </html>
{% block xxx %} 与 {% endblock xxx %} 的中间可以进行替换。而其他的内容可以继承。模板继承可以极大地提高开发效率。
01.html 如下:
{% extends "base.html" %} {% block title %} <p>01的标题</p> {% endblock title %} {% block content %} <p>01页面独有的内容</p> {% endblock content %}
02.html 如下:
{% extends "base.html" %} {% block title %} <p>02的标题</p> {% endblock title %} {% block content %} <p>02页面独有的内容</p> {% endblock content %}
你可以从模板中直接访问Flask当前的config对象:
{{config.SQLALCHEMY_DATABASE_URI}} sqlite:///database.db
就是flask中代表当前请求的request对象:
{{request.url}}
http://127.0.0.1
为Flask的session对象
{{session.new}}
True
在视图函数中设置g变量的 name 属性的值,然后在模板中直接可以取出
{{ g.name }}
url_for会根据传入的路由器函数名,返回该路由对应的URL,在模板中始终使用url_for()就可以安全的修改路由绑定的URL,则不比担心模板中渲染出错的链接:
{{url_for(‘home‘)}}
/
如果我们定义的路由URL是带有参数的,则可以把它们作为关键字参数传入url_for(),Flask会把他们填充进最终生成的URL中:
{{ url_for(‘post‘, post_id=1)}}
/post/1
标签:部分 完全 页面 database 出错 pos extends 继承 web开发
原文地址:https://www.cnblogs.com/chichung/p/9775192.html