Jadual Kandungan
1. Gambaran Keseluruhan
hello
2. Pengenalan sintaks JinJa2 dan penjelasan contoh
1) Pembolehubah
hello {{ name }}!
2) Struktur kawalan
Hello {{ user.name }}, you are an adult!
Hello {{ user.name }}, you are a minor!
Hello, anonymous user!
3) Struktur gelung
Hello {{ user.name }}!
4) Makro
5) Penapis
6)继承
Hello World!
7)包含
Rumah pembangunan bahagian belakang Tutorial Python Cara menggunakan sintaks Python Flask JinJa2

Cara menggunakan sintaks Python Flask JinJa2

May 16, 2023 am 09:19 AM
python flask jinja2

1. Gambaran Keseluruhan

Flask ialah rangka kerja web Python ringan yang menyokong enjin templat Jinja2. Jinja2 ialah enjin templat Python popular yang boleh digunakan untuk mencipta aplikasi web dinamik menggunakan Flask.

Halaman web biasanya memerlukan html, css dan js Apabila anda mula-mula mempelajari web python, anda boleh menulis seperti ini:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return &#39;<h2 id="hello">hello</h2><p >hello world!!!</p>&#39;
if __name__ == &#39;__main__&#39;:
	app.run(host=&#39;0.0.0.0&#39;, port=8000, debug=True)
Salin selepas log masuk

Walaupun kod di atas boleh dilaksanakan, ia tidak cantik pengaturcaraan adalah asas Semua di atas adalah pemisahan bahagian hadapan dan bahagian belakang, dan kod bahagian hadapan tidak akan dibenamkan dalam proksi bahagian belakang Untuk mencapai pemisahan bahagian hadapan dan bahagian hadapan, penyelesaian reka bentuk MVT ialah digunakan:

M dinyatakan sebagai Model, yang sama dengan M dalam MVC Fungsinya adalah sama, bertanggungjawab untuk berinteraksi dengan pangkalan data dan melaksanakan pemprosesan data.

V dinyatakan sebagai View, yang mempunyai fungsi yang sama seperti C dalam MVC Ia menerima permintaan, menjalankan pemprosesan perniagaan dan mengembalikan respons.

T dinyatakan sebagai Template, yang mempunyai fungsi yang sama seperti V dalam MVC dan bertanggungjawab untuk merangkum dan membina html untuk dikembalikan.

Cara menggunakan sintaks Python Flask JinJa2

2. Pengenalan sintaks JinJa2 dan penjelasan contoh

Pengenalan sintaks JinJa2 dan penjelasan contoh:

1) Pembolehubah

Dalam Jinja2, gunakan {{ }} untuk memasukkan pembolehubah. Dalam Flask, anda boleh memaparkan pembolehubah dengan menghantarnya ke templat. Kod sampel adalah seperti berikut:

# variable.py
# Flask中将变量传递给模板
from flask import Flask, render_template
app = Flask(__name__)
# 也可指定模板目录
# app = Flask(__name__, template_folder="/opt/python-projects/flask")
@app.route(&#39;/&#39;)
def hello():
    name = "Alice"
    return render_template(&#39;variable.html&#39;, name=name)
if __name__ == &#39;__main__&#39;:
    app.run(host=&#39;0.0.0.0&#39;, port=8000, debug=True)
Salin selepas log masuk

Dalam kod di atas, pembolehubah name dihantar ke templat hello.html.

<!-- templates/variable.html模板 -->
<!DOCTYPE html>
<html>
<head>
    <title>variable</title>
</head>
<body>
    <h2 id="hello-nbsp-nbsp-name-nbsp">hello {{ name }}!</h2>
</body>
</html>
Salin selepas log masuk

melaksanakan

python3 variable.py
Salin selepas log masuk

untuk mengakses

curl http://192.168.182.110:8000/
Salin selepas log masuk

2) Struktur kawalan

Dalam Jinja2, anda boleh menggunakan if, for dan while dan pernyataan lain untuk mengawal output dalam templat. Kod sampel adalah seperti berikut:

# if.py
# Flask中使用if控制结构
from flask import Flask, render_template
app = Flask(__name__)
@app.route(&#39;/&#39;)
def hello():
    user = {"name": "Alice", "age": 25}
    return render_template(&#39;if.html&#39;, user=user)
if __name__ == &#39;__main__&#39;:
    app.run(host=&#39;0.0.0.0&#39;, port=8000, debug=True)
Salin selepas log masuk

templates/if.html Fail templat

<!-- if.html模板 -->
<!DOCTYPE html>
<html>
<head>
    <title>Hello</title>
</head>
<body>
    {% if user %}
        {% if user.age >= 18 %}
            <h2 id="Hello-nbsp-nbsp-user-name-nbsp-nbsp-you-nbsp-are-nbsp-an-nbsp-adult">Hello {{ user.name }}, you are an adult!</h2>
        {% else %}
            <h2 id="Hello-nbsp-nbsp-user-name-nbsp-nbsp-you-nbsp-are-nbsp-a-nbsp-minor">Hello {{ user.name }}, you are a minor!</h2>
        {% endif %}
    {% else %}
        <h2 id="Hello-nbsp-anonymous-nbsp-user">Hello, anonymous user!</h2>
    {% endif %}
</body>
</html>
Salin selepas log masuk

Dalam kod di atas, gunakan pernyataan if untuk mengawal output dan memaparkan mesej yang berbeza mengikut umur pengguna.

3) Struktur gelung

Dalam Jinja2, anda boleh menggunakan pernyataan for untuk menggelungkan kandungan dalam templat output. Kod sampel adalah seperti berikut:

# for.py
# Flask中使用for循环结构
from flask import Flask, render_template
app = Flask(__name__)
@app.route(&#39;/&#39;)
def hello():
    users = [{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]
    return render_template(&#39;for.html&#39;, users=users)
if __name__ == &#39;__main__&#39;:
    app.run(host=&#39;0.0.0.0&#39;, port=8000, debug=True)
Salin selepas log masuk

templates/for.html Fail templat

<!-- for.html模板 -->
<!DOCTYPE html>
<html>
<head>
    <title>Hello</title>
</head>
<body>
    {% for user in users %}
        <h2 id="Hello-nbsp-nbsp-user-name-nbsp">Hello {{ user.name }}!</h2>
        <p>You are {{ user.age }} years old.</p>
    {% endfor %}
</body>
</html>
Salin selepas log masuk

Dalam kod di atas, gunakan gelung for untuk melintasi senarai pengguna dan mengeluarkan maklumat setiap pengguna.

4) Makro

Dalam Jinja2, anda boleh menggunakan makro untuk menentukan blok kod yang boleh digunakan semula Kod sampel adalah seperti berikut:

# great.py
# Flask中使用宏
from flask import Flask, render_template
app = Flask(__name__)
@app.route(&#39;/&#39;)
def hello():
    users = [{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]
    return render_template(&#39;great.html&#39;, users=users)
if __name__ == &#39;__main__&#39;:
    app.run(host=&#39;0.0.0.0&#39;, port=8000, debug=True)
Salin selepas log masuk

Tentukan makrotemplates/macros.html templat

# 定义一个宏
{% macro print_user(user) %}
    <h2 id="Hello-nbsp-nbsp-user-name-nbsp">Hello {{ user.name }}!</h2>
    <p>You are {{ user.age }} years old.</p>
{% endmacro %}
Salin selepas log masuk

Dalam kod di atas, makro bernama print_user ditakrifkan Makro boleh diimport melalui import dalam templat dan digunakan untuk mengeluarkan maklumat pengguna. Templat templates/great.html

<!-- great.html模板 -->
<!DOCTYPE html>
<html>
<head>
    <title>Hello</title>
</head>
<body>
    {% for user in users %}
        {% import &#39;macros.html&#39; as macros %}
        {{ macros.print_user(user) }}
    {% endfor %}
</body>
</html>
Salin selepas log masuk

Dalam kod di atas, makro bernama print_user ditakrifkan untuk mengeluarkan maklumat pengguna.

5) Penapis

Dalam Jinja2, penapis boleh memproses pembolehubah, seperti tarikh pemformatan, menukar huruf besar, dll. Kod sampel adalah seperti berikut:

# filter.py
# Flask中使用过滤器
from flask import Flask, render_template
import datetime
app = Flask(__name__)
@app.route(&#39;/&#39;)
def hello():
    now = datetime.datetime.now()
    return render_template(&#39;filter.html&#39;, now=now)
# 自定义过滤器
@app.template_filter(&#39;datetimeformat&#39;)
def datetimeformat(value, format=&#39;%Y-%m-%d %H:%M:%S&#39;):
    return value.strftime(format)
if __name__ == &#39;__main__&#39;:
    app.run(host=&#39;0.0.0.0&#39;, port=8000, debug=True)
Salin selepas log masuk

Fail templat templates/filter.html

<!-- filter.html模板 -->
<!DOCTYPE html>
<html>
<head>
    <title>Hello</title>
</head>
<body>
    <p>The current date and time is: {{ now|datetimeformat }}</p>
</body>
</html>
Salin selepas log masuk

Dalam kod di atas, penapis bernama datetimeformat ditakrifkan untuk memformat tarikh dan masa. Berikut ialah penapis tersuai Malah, JinJa2 juga mempunyai beberapa penapis terbina dalam. Penapis terbina dalam dalam Jinja2: jinja.palletsprojects.com/en/3.0.x/te…

过滤器名解释举例
abs(value)返回一个数值的绝对值{{ -1|abs }}
int(value)将值转换为int类型{{ param | int }}
float(value)将值转换为float类型
string(value)将变量转换成字符串
default(value,default_value,boolean=false)如果当前变量没有值,则会使用参数中的值来代替。如果想使用python的形式判断是否为false,则可以传递boolean=true。也可以使用or来替换{{ name|default('xiaotuo') }}
safe(value)如果开启了全局转义,那么safe过滤器会将变量关掉转义{{ content_html|safe }}
escape(value)或e转义字符,会将<、>等符号转义成HTML中的符号{{ content|escape或content|e }}
first(value)返回一个序列的第一个元素{{ names|first }}
format(value,*arags,**kwargs)格式化字符串%s"-"%s"|format('Hello?',"Foo!") }} 输出 Hello?-Fool!
last(value)返回一个序列的最后一个元素。{{ names|last }}
length(value)返回一个序列或者字典的长度。{{ names|length }}
join(value,d='+')将一个序列用d这个参数的值拼接成字符串
lower(value)将字符串转换为小写
upper(value)将字符串转换为小写
replace(value,old,new)替换将old替换为new的字符串
truncate(value,length=255,killwords=False)截取length长度的字符串
striptags(value)删除字符串中所有的HTML标签,如果出现多个空格,将替换成一个空格
trim截取字符串前面和后面的空白字符{{ str123 | trim }}
wordcount(s)计算一个长字符串中单词的个数

6)继承

在Jinja2中,可以使用继承来创建一个包含共同元素的模板,并通过继承该模板来创建更具体的模板。示例代码如下:

# extend.py
# Flask中使用继承
from flask import Flask, render_template
app = Flask(__name__)
@app.route(&#39;/&#39;)
def hello():
    return render_template(&#39;extend.html&#39;)
if __name__ == &#39;__main__&#39;:
    app.run(host=&#39;0.0.0.0&#39;, port=8000, debug=True)
Salin selepas log masuk

模板文件 templates/base.html

<!-- base.html模板 -->
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    {% block content %}{% endblock %}
</body>
</html>
Salin selepas log masuk

模板文件 templates/extend.html

<!-- extend.html模板 -->
{% extends "base.html" %}
{% block title %}Hello{% endblock %}
{% block content %}
    <h2 id="Hello-nbsp-World">Hello World!</h2>
{% endblock %}
Salin selepas log masuk

在上面的代码中,定义了一个名为 base.html 的模板,并在 extend.html 模板中继承了该模板。extend.html 模板中可以重写 base.html 模板中的块,并在其中添加新的内容。

7)包含

在Jinja2中,可以使用包含来将一个模板包含到另一个模板中。示例代码如下:

# contain.py
# Flask中使用包含
from flask import Flask, render_template
app = Flask(__name__)
@app.route(&#39;/&#39;)
def hello():
    return render_template(&#39;contain.html&#39;)
if __name__ == &#39;__main__&#39;:
    app.run(host=&#39;0.0.0.0&#39;, port=8000, debug=True)
Salin selepas log masuk

模板文件 templates/contain.html

<!-- contain.html模板 -->
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    {% block content %}{% endblock %}
    {% include "footer.html" %}
</body>
</html>
Salin selepas log masuk

模板文件 templates/footer.html

<!-- footer.html模板 -->
<footer>
    <p>&copy; 2023</p>
</footer>
Salin selepas log masuk

在上面的代码中,定义了一个名为 footer.html 的模板,并在 contain.html 模板中使用包含将 footer.html 模板包含到页面底部。这样,可以避免在每个页面中重复添加相同的页脚。

Atas ialah kandungan terperinci Cara menggunakan sintaks Python Flask JinJa2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP dan Python: Contoh dan perbandingan kod PHP dan Python: Contoh dan perbandingan kod Apr 15, 2025 am 12:07 AM

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Apr 15, 2025 am 12:16 AM

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Penjelasan terperinci mengenai Prinsip Docker Penjelasan terperinci mengenai Prinsip Docker Apr 14, 2025 pm 11:57 PM

Docker menggunakan ciri -ciri kernel Linux untuk menyediakan persekitaran berjalan yang cekap dan terpencil. Prinsip kerjanya adalah seperti berikut: 1. Cermin digunakan sebagai templat baca sahaja, yang mengandungi semua yang anda perlukan untuk menjalankan aplikasi; 2. Sistem Fail Kesatuan (Unionfs) menyusun pelbagai sistem fail, hanya menyimpan perbezaan, menjimatkan ruang dan mempercepatkan; 3. Daemon menguruskan cermin dan bekas, dan pelanggan menggunakannya untuk interaksi; 4. Ruang nama dan cgroups melaksanakan pengasingan kontena dan batasan sumber; 5. Pelbagai mod rangkaian menyokong interkoneksi kontena. Hanya dengan memahami konsep -konsep teras ini, anda boleh menggunakan Docker dengan lebih baik.

Bolehkah kod studio visual digunakan dalam python Bolehkah kod studio visual digunakan dalam python Apr 15, 2025 pm 08:18 PM

Kod VS boleh digunakan untuk menulis Python dan menyediakan banyak ciri yang menjadikannya alat yang ideal untuk membangunkan aplikasi python. Ia membolehkan pengguna untuk: memasang sambungan python untuk mendapatkan fungsi seperti penyempurnaan kod, penonjolan sintaks, dan debugging. Gunakan debugger untuk mengesan kod langkah demi langkah, cari dan selesaikan kesilapan. Mengintegrasikan Git untuk Kawalan Versi. Gunakan alat pemformatan kod untuk mengekalkan konsistensi kod. Gunakan alat linting untuk melihat masalah yang berpotensi lebih awal.

Cara menjalankan program di terminal vscode Cara menjalankan program di terminal vscode Apr 15, 2025 pm 06:42 PM

Dalam kod VS, anda boleh menjalankan program di terminal melalui langkah -langkah berikut: Sediakan kod dan buka terminal bersepadu untuk memastikan bahawa direktori kod selaras dengan direktori kerja terminal. Pilih arahan Run mengikut bahasa pengaturcaraan (seperti python python your_file_name.py) untuk memeriksa sama ada ia berjalan dengan jayanya dan menyelesaikan kesilapan. Gunakan debugger untuk meningkatkan kecekapan debug.

Adakah sambungan vscode berniat jahat? Adakah sambungan vscode berniat jahat? Apr 15, 2025 pm 07:57 PM

Sambungan kod VS menimbulkan risiko yang berniat jahat, seperti menyembunyikan kod jahat, mengeksploitasi kelemahan, dan melancap sebagai sambungan yang sah. Kaedah untuk mengenal pasti sambungan yang berniat jahat termasuk: memeriksa penerbit, membaca komen, memeriksa kod, dan memasang dengan berhati -hati. Langkah -langkah keselamatan juga termasuk: kesedaran keselamatan, tabiat yang baik, kemas kini tetap dan perisian antivirus.

Boleh kod vs dijalankan di Windows 8 Boleh kod vs dijalankan di Windows 8 Apr 15, 2025 pm 07:24 PM

Kod VS boleh dijalankan pada Windows 8, tetapi pengalaman mungkin tidak hebat. Mula -mula pastikan sistem telah dikemas kini ke patch terkini, kemudian muat turun pakej pemasangan kod VS yang sepadan dengan seni bina sistem dan pasangnya seperti yang diminta. Selepas pemasangan, sedar bahawa beberapa sambungan mungkin tidak sesuai dengan Windows 8 dan perlu mencari sambungan alternatif atau menggunakan sistem Windows yang lebih baru dalam mesin maya. Pasang sambungan yang diperlukan untuk memeriksa sama ada ia berfungsi dengan betul. Walaupun kod VS boleh dilaksanakan pada Windows 8, disyorkan untuk menaik taraf ke sistem Windows yang lebih baru untuk pengalaman dan keselamatan pembangunan yang lebih baik.

Python: Automasi, skrip, dan pengurusan tugas Python: Automasi, skrip, dan pengurusan tugas Apr 16, 2025 am 12:14 AM

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.

See all articles