flask框架jinja2模板与模板继承实例分析

yipeiwu_com6年前Python基础

本文实例讲述了flask框架jinja2模板与模板继承。分享给大家供大家参考,具体如下:

jinja2模板

from werkzeug.contrib.cache import SimpleCache
from flask import Flask, request, render_template,redirect,abort, url_for
CACHE_TIME = 300
cache = SimpleCache()
cache.timeout = CACHE_TIME
app = Flask(__name__)
@app.before_request
def return_cached():
  if not request.values:
    response = cache.get(request.path)
    if response:
      print("Got the page from cache!")
      return response
  print("Will load the page!")
@app.after_request
def cache_response(response):
  print("aaaaaaaaaaaaaaaaaaaaaa")
  if not request.values:
    cache.set(request.path, response, CACHE_TIME)
  return response
@app.teardown_request
def teardown_request(response):
  print('llllllllllllllllllllllll')
  return "llllllllllllllllllllll"
# @app.route('/')
@app.route('/get_index')
def index():
  return render_template('jinja2.html', a_variable="Developer", navigation=["http://www.163.com", "www.baidu.com"])
if __name__ == '__main__':
  app.run(port=8000)

jinja2.html必须在templates文件夹下,例子如下:

<!DOCTYPE html>
<html>
<head>
  <title>jinja2_test</title>
</head>
<body>
  <ul id="navigation">
    {% for item in navigation %} #表达式
      <li href='{{ item }}'>{{ item }}</li> #输出变量
    {% endfor %}
  </ul>
  <h1>HelloWorld</h1>
  {{a_variable}}#输出变量
    {# aaaa #}#模板注释,加载自动删除
</body>
</html>

jinja2模板继承

父亲:

<!DOCTYPE html>
<html>
<head>
  <title>模板继承</title>
</head>
<body>
  <span>这是基模板</span>
  <div id="content">{% block content %}{% endblock %}</div>
</body>
</html>

{% block content %}{% endblock %}包含jinja2的字模板块;

子:

<!DOCTYPE html>
<html>
<head>
  <title>模板继承</title>
</head>
<body>
  {% extend "jinja2_模板继承.html"%}
  {% block content %}
  <p class="importtant">我在子模板</p>
</body>
</html>

{% extends "jinja2_模板继承.html"%}标签是这里的关键,告诉模板引擎这个模板继承自另外一个模板。该标签必须是子模板的第一个标签,解释器会自动将父亲的内容复制到子模板中!

结果应该是这样:

<!DOCTYPE html>
<html>
<head>
  <title>模板继承</title>
</head>
<body>
  <span>这是基模板</span>
  <div id="content">
      <p class="importtant">我在子模板</p>
    </div>
</body>
</html>

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

相关文章

python hook监听事件详解

python hook监听事件详解

本文实例为大家分享了python hook监听事件的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- # # by oldj http://ol...

python 读入多行数据的实例

python 读入多行数据的实例

一、前言 本文主要使用python 的raw_input() 函数读入多行不定长的数据,输入结束的标志就是不输入数字情况下直接回车,并填充特定的数作为二维矩阵 二、代码 def ge...

python-django中的APPEND_SLASH实现方法

python-django中的APPEND_SLASH实现方法

关于django中的APPEND_SLASH APPEND_SLASH 它是啥? 看变量名大概能知道做什么,就是添加斜线,用路由系统那里。 路由文件,只写了路由关系代码 .........

举例讲解Python中的Null模式与桥接模式编程

Null模式 我想每个人都有一种经历,为了获取某属性,但是有时候属性是None,那么需要你做异常处理, 而假如你想节省这样的条件过滤的代码,可以使用Null模式以减少对象是否为None的...

K-近邻算法的python实现代码分享

K-近邻算法的python实现代码分享

k-近邻算法概述: 所谓k-近邻算法KNN就是K-Nearest neighbors Algorithms的简称,它采用测量不同特征值之间的距离方法进行分类 用官方的话来说,所谓K近邻...