Der Inhalt dieses Artikels handelt davon, was Jinja2 in Python ist. Wie benutzt man? , hat einen bestimmten Referenzwert, Freunde in Not können sich darauf beziehen, ich hoffe, es wird Ihnen hilfreich sein.
Was ist Jinja2? Seine Syntax und seine leistungsstarken Funktionen. Am wichtigsten ist die Hinzufügung von Sandbox-Ausführungsfunktionen und optionalen automatischen Escape-Funktionen, die für die Sicherheit der meisten Anwendungen sehr wichtig sind.
Basiert auf Unicode und kann auf Python2.4 und späteren Versionen, einschließlich Python3, ausgeführt werden.So verwenden Sie Jinja2
Um die Jinja2-Vorlage zu verwenden, müssen Sie die Funktion render_template aus flask importieren und dann die Funktion render_template in der Routing-Funktion aufrufen Der erste Parameter dieser Funktion ist der Vorlagenname. Vorlagen werden standardmäßig im Verzeichnis gespeichert.
Die einfachste Vorlagendatei ist eine gewöhnliche HTML-Datei, aber statische Dateien sind bedeutungslos. Sie müssen die Antwortparameter beim Zugriff auf die Route übergeben und sie daher in einem bestimmten Stil im Browser anzeigen , Sie müssen die Schlüsselwortparameter der Funktion render_template verwenden. Angenommen, es gibt eine Vorlagendatei hello.html. Der Code lautet wie folgt:<h1> hello,{{name}}.</h1>
render_template('hello.html',name='star')
Webseiten-Ausgabecode
<h1> hello,star.</h1>
gemeinsame Jinja2-Syntax
1.变量显示语法: {{ 变量名 }} 2. for循环: {% for i in li%} {% endfor %} 3. if语句 {% if user == 'westos'%} {% elif user == 'hello' %} {% else %} {% endif%}
# templates目录里面建立mubna.html文件 nbsp;html> <meta> <title>hello</title> <p>变量:{{ name }}</p> <p>列表:{{ li }}</p> <p>列表元素: {% for item in li %} <br>{{ item }} {% endfor %}</p> <p>字典:{{ d }}</p> <p>字典元素: {{ d.a }} {{ d['b'] }}</p> <p>对象:{{ u }}</p>
用户 | 密码 |
{{ u.name }} | {{ u.passwd }} |
from flask import Flask, render_template app = Flask(__name__) class User(object): def __init__(self, name, passwd): self.name = name self.passwd = passwd def __str__(self): return "<user:>" %(self.name) @app.route('/') def index1(): name = "sheen is cute !!" li = [1, 2, 4, 5] d = dict(a=1, b=2) u = User("westos", "passwd") return render_template('muban.html', name = name, li = li, d = d, u = u ) app.run()</user:>
Filter in Vorlage
Die Die vom Server an den Client zurückgegebenen Daten können aus verschiedenen Datenquellen stammen. Diese Datenformate erfüllen möglicherweise nicht die Anforderungen des Kunden und die Daten müssen erneut verarbeitet werden. Der Filter muss nach der Vorlagenausdrucksvariablen platziert werden, getrennt durch „|“ zwischen der Variablen und {{ vlaue|upper}}, um alle englischen Buchstaben des Werts in Großbuchstaben umzuwandeln.
Schreiben Sie einen Zeitfilter, der Zeitstempel in Zeichenfolgenzeiten in einem bestimmten Format umwandelt
from flask import Flask, render_template import time app = Flask(__name__) def time_format(value,format="%Y-%m-%d %H:%M:%S"): # 时间戳----> 元组 t_time = time.localtime(value) # 元组 ----> 指定字符串 return time.strftime(format,t_time) # 第一个参数是过滤器函数,第二个参数是过滤器名称 app.add_template_filter(time_format,'time_format') @app.route('/chtime/') def chtime(): return render_template('chtime.html',timestamp = time.time()) app.run()
Makrooperationen
Beim Schreiben von Python-Programmen gibt es viele Stellen, an denen der gleiche oder ein ähnlicher Code aufgerufen wird. In diesem Fall können Sie den wiederverwendeten Code in eine Funktion oder Klasse einfügen und müssen nur auf die Instanz der Funktion oder Klasse zugreifen, um eine Wiederverwendung des Codes zu erreichen. Makros werden in Jinja2-Vorlagen verwendet, um Coderedundanz zu verhindern.
Die Makros in der Jinja2-Vorlage müssen in {%......%} platziert werden, Änderungen verwenden, Parameter unterstützen und mit {% endmacro % enden🎜>Wenn die Makro soll mehrfach verwendet werden Um eine Vorlagendatei freizugeben, müssen Sie das Makro separat in eine Vorlagendatei einfügen und dann den Befehl {% import ....%} verwenden, um die Vorlage zu importieren
Rufen Sie das Makro auf, um die Vorlagenvererbung der Anmeldeseite zu realisieren# templates/目录下的chtime.html nbsp;html> <meta> <title>Title</title> 时间戳 {{ timestamp }} <br> 格式化后的时间 {{ timestamp | time_format }}
## templates/目录下的macro.html {% macro input(type, name, text ) %} <p> <label>{{ text }}</label> <input> </p> {% endmacro %}
# # templates/目录下的login.html {% extends "base.html" %} {% block title %} 登陆 {% endblock %} {% block content %} <p> </p><h1>登录 <small>没有账号?<a>注册</a></small> </h1> {# /*将表单信息提交给/login路由对应的函数进行处理, 并且提交信息的方式为post方法, 为了密码的安全性*/#}
Vorlagenvererbung
Die Jinja2-Vorlage verfügt über eine weitere Code-Wiederverwendungstechnologie, nämlich die Vorlagenvererbung. Wenn eine Vorlage von einer anderen Vorlage geerbt wird, kann über {{ super() }} auf die Ressourcen der übergeordneten Vorlage zugegriffen werden. Um eine Vorlage von einer anderen Vorlage zu erben, ist die Extens-Direktive erforderlich. Beispielsweise erbt die Vorlagendatei „child.txt“ den Code von „parent.txt“. #主程序
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/login/')
def login():
return render_template('login.html')
app.run()
{% extends ‘parents.txt’ %}
muss mithilfe von {{super() }} in child.txt referenziert werden. Darunter ist xxxx der Name des Blocks
Vorlagenvererbungssyntax:{% block xxxx%} .... {% endblock %}
1. 如何继承某个模板? {% extends "模板名称" %} 2. 如何挖坑和填坑? 挖坑: {% block 名称 %} 默认值 {% endblock %} 填坑: {% block 名称 %} {% endblock %} 3. 如何调用/继承被替代的模板? 挖坑: {% block 名称 %} 默认值 {% endblock %} 填坑: {% block 名称 %} #如何继承挖坑时的默认值? {{ super() }} # 后面写新加的方法. ........ {% endblock %}
#templates目录下建立parent.html模板文件 nbsp;html> {% block head %} <meta> <title>{% block title %}hello{% endblock %}</title> {% endblock %} I LOVE PYTHON! <br> {% block body %} Cute,{{ text }} {% endblock %}
#templates目录下建立child.html模板文件 {% extends 'parent.html' %} {% block title %} {#继承挖坑时的默认值:{{ super() }}#} {{ super() }}-{{ text }} {% endblock %} {% block body %} <h1>{{ super() }},Beauty!</h1> {% endblock %}
Das obige ist der detaillierte Inhalt vonWas ist Jinja2 in Python? Wie benutzt man?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!