从零开始学Python Flask Web(六)--jinja2模板

前言:

后面的内容准备以一个登录注册的web程序来演示。在开始做程序之前,先说点需要用到的东西。那就是jinja2模板的一些常用方法,以及数据库的ORM映射关系。


jinja2模板基本语法:

先来看一个简单的模板的样子base.html:

  
      
    
{% block main %} {% endblock %}

其中:url_for('login')  这是个路由反转的方式,这里表示的是 login是我的一个视图处理函数的名字,我根据这个名字来得到我的路由信息。

@app.route('/login/',methods=['GET','POST'])
def login():
    if request.method == 'GET':
        return  render_template('login.html')

那我使用url_for('login')  得到的就是/login/  这个路由URL。这样就保证了在如果我换了路由的信息,/login/ 换成了/temp-login/ ,那url_for('login') 指向的就是temp-login/

 

{{ ... }}  里面是用来存放变量的,可用于把想表达的数据输出到模板上

{% ... %} 这里面存放的是语句,比如if判断语句或者for循环语句

{# ...  #}   模板注释,他不会出现在渲染的页面中

合理的使用模板继承,让模板能重用,能提高工作效率和代码质量。我们刚才定义一个base.html,然后我们再定义一个index.html:如下:

{% extends 'base.html' %}

{% block main %}
     
  • 索隆

    这是要展示的一个博物馆藏品

    索隆 2018-8-2 15:42:12
{% endblock %}

那么这个index.html 通过{% extends 'base.html' %}的方式,继承自base.html。就意味着base.html上的东西都会显示在index.html上面。完全拷贝过来了。这样就可以达到我们模板重用的方便性。

而我的index.html这个子模版也需要自己个性化的东西,那么在base.html中我们看到有这样的代码。

{% block main %} ... {% endblock %}

这就表示,子模版在做自己个性化东西的时候写在main这个标记块中。那么在index.html中我们看到

{% block main %}

  • 索隆

    这是要展示的一个博物馆藏品

    索隆 2018-8-2 15:42:12

{% endblock %}

效果展示:

最上面的导航栏都是继承自base模板的。所以所有子模块都具有相同的导航栏,而内容块(block修饰的)却都是自己的。

这是登录页面以及首页(均继承了base模板):

从零开始学Python Flask Web(六)--jinja2模板_第1张图片

从零开始学Python Flask Web(六)--jinja2模板_第2张图片

            


常用的jinja2模板的知识就说到这里,它让我们可以在html文件中方便的显示变量,写简单的python语句来处理问题等。这都是flask模板给我们做好了的,我们直接使用就可以。

你可能感兴趣的:(Python,Flask,Web)