Heim >Backend-Entwicklung >Python-Tutorial >Was ist Jinja2 in Python? Wie benutzt man?

Was ist Jinja2 in Python? Wie benutzt man?

不言
不言nach vorne
2018-10-25 15:54:3013332Durchsuche

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>
Der von {{...}} eingeschlossene Teil ist der Vorlagenausdruck. Wenn Sie die Funktion render_template zum Aufrufen der Vorlagendatei hello.html verwenden, müssen Sie den Namenswert über Schlüsselwortparameter angeben.

render_template('hello.html',name='star')
Bei der Rückgabe an den Client wird {{name}} durch einen Stern ersetzt.

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%}
Datenanzeige

# 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:>

Was ist Jinja2 in Python? Wie benutzt man?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()
rrree


Was ist Jinja2 in Python? Wie benutzt man?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方法, 为了密码的安全性*/#}
    
                                                             {% import 'macro.html' as macro %}         {#调用宏模板#}         {{macro.input('text', 'user', "用户名/手机/邮箱" )}}         {{macro.input('password','passwd',  "密码" )}}                                                     

                     

        

            忘记密码?         

                 {% if message %}         

{{ message }}

        {% endif %}     
{% endblock %}

Was ist Jinja2 in Python? Wie benutzt man?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()
Nachdem „child.txt“ von der Vorlage „parent.txt“ erbt, wird automatisch der gesamte Code in „parent.txt“ verwendet, dies muss jedoch der Fall sein in

{% extends ‘parents.txt’ %}
platziert werden. Der Code in

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen