jinja2

  • jinja2模板渲染
    python的web开发中,业务逻辑(实质就是试图函数的内容)和页面逻辑(html文件)分开的,使得代码的可读性增强,代码容易理解和维护,在html文件中,通过动态赋值,模板渲染将重新翻译好的html文件(模板引擎生效)返回给用户
    jinja2变量显示语法{{变量名}}
    for循环
{% for i in li %}
{% endfor %}

if语句

{% if user == '123' %}
{% elif user == 'hello' %}
{% else %}
{% endif %}

后台消息

@app.route('/')
def index1():
    name = "这是一个消息"
    li = [1, 2, 4, 5]
    d = dict(a=1, b=2)
    u = User("user", "passwd")
    return  render_template('index1.html',
                            name = name,
                            li = li,
                            d = d,
                            u = u
                            )

通过render_template()给页面传送变量值

  • 模板继承语法
    • 继承模板
      {% extends "模板名称" %}
    • 挖坑与填坑
      挖坑
      {% block 名称 %}
      默认值
      {% endblock %}
      
      填坑
      {% block 名称 %}
      {% endblock %}
      
    • 调用/继承被替代的模板
      挖坑:
          {% block 名称 %}
              默认值
          {% endblock %}
      填坑:
          {% block 名称 %}
              #如何继承挖坑时的默认值?
              {{ super() }}
              # 后面写新加的方法.
              ........
          {% endblock %}
      

macro是一个宏
macro.html

{# 宏: 是一个函数 #}



{% macro input(type,  name, text ) %}

 
{% endmacro %}

base.html:




    
    {% block title %}  首页  {% endblock %}
    
    
    







{% block content %}


{% endblock %}



login.html

{% extends "base.html" %}

{% block title %}
登陆
{% endblock %}


{% block content %}

登录 没有账号?注册

/*将表单信息提交给/login路由对应的函数进行处理, 并且提交信息的方式为post方法, 为了密码的安全性*/
{% import 'macro.html' as macro %} {{macro.input('text', 'user', "用户名/手机/邮箱" )}} {{macro.input('password','passwd', "密码" )}} {% if message %}

{{ message }}

{% endif %}
{% endblock %}

你可能感兴趣的:(jinja2)