この記事では、Python の Jinja2 とは何ですか?使い方? 、特定の参考値があり、困っている友人がそれを参照できます。お役に立てば幸いです。
Jinja2 とは
Jinja2 は、Python で次に広く使用されているテンプレート エンジンであり、その設計アイデアは Django のテンプレート エンジンから派生し、その構文とセットが拡張されています。強力な機能を備えています。最も重要なのは、サンドボックス実行機能とオプションの自動エスケープ機能の追加であり、これらはほとんどのアプリケーションのセキュリティにとって非常に重要です。
Unicode に基づいており、python3 を含む python2.4 以降のバージョンで実行できます。
Jinja2 の使用方法
Jinja2 テンプレートを使用するには、flask から render_template 関数をインポートし、ルーティング関数で render_template 関数を呼び出す必要があります。この関数のパラメータはテンプレート名です。テンプレートはデフォルトでディレクトリに保存されます。
最も単純なテンプレート ファイルは通常の HTML ファイルですが、静的ファイルでは意味がありません。ルートにアクセスするときに応答パラメータを渡し、テンプレート内の特定の形式でブラウザに表示する必要があります。 , render_template 関数のキーワード パラメーターを使用する必要があります。テンプレート ファイル hello.html があるとします。コードは次のとおりです。
<h1 id="hello-name"> hello,{{name}}.</h1>
{{...}} で囲まれた部分がテンプレート式です。 render_template 関数を使用してテンプレート ファイル hello.html を呼び出す場合は、キーワード パラメータを通じて名前の値を指定する必要があります。
render_template('hello.html',name='star')
クライアントに返されると、{{name}} はスターに置き換えられます。
Web ページの出力コード
<h1 id="hello-star"> hello,star.</h1>
jinja2 共通構文
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:>
テンプレート内のフィルター
サーバーからクライアントに返されるデータは、さまざまなデータ ソースから取得される場合があります。これらのデータ形式はクライアントのニーズを満たさない可能性があるため、データを再処理する必要があります。
フィルターはテンプレート式変数の後に配置し、変数と '|' で区切る必要があります。{{ vlaue|upper}} は値のすべての英語文字を大文字に変換します。
タイムスタンプを特定の形式の文字列時間に変換する時間フィルターを作成します
#
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()
# templates/目录下的chtime.html nbsp;html> <meta> <title>Title</title> 时间戳 {{ timestamp }} <br> 格式化后的时间 {{ timestamp | time_format }}
Python プログラムを作成する場合、同じまたは類似したコードが呼び出される箇所が数多くあります。この場合、再利用されたコードを関数またはクラスに入れることができ、関数またはクラスのインスタンスにアクセスするだけでコードを再利用できます。 Jinja2 テンプレートでは、コードの冗長性を防ぐためにマクロが使用されます。
Jinja2 テンプレートのマクロは、{%....%} に配置し、変更を使用し、パラメーターをサポートし、{% endmacro %}で終わる必要があります。マクロは複数回使用されます。テンプレート ファイルを共有するには、マクロをテンプレート ファイルに個別に配置し、{% import ....%} コマンドを使用してテンプレートをインポートします
#マクロを呼び出してログイン ページのテンプレートの継承を実現します
## 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方法, 为了密码的安全性*/#}{% endblock %}
#主程序 from flask import Flask, render_template app = Flask(__name__) @app.route('/login/') def login(): return render_template('login.html') app.run()
テンプレートの継承
{% extends ‘parents.txt’ %}child.txt がparent.txt テンプレートから継承すると、parent.txt 内のすべてのコードが自動的に使用されますが、これは必ず使用されます。
{% block xxxx%} .... {% endblock %}に配置します。 のコードは、child.txt の {{super() }} を使用して参照する必要があります。このうち、xxxx はブロックの名前です。
テンプレート継承構文:
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 id="super-Beauty">{{ super() }},Beauty!</h1> {% endblock %}
# 主程序 from flask import Flask,render_template app = Flask(__name__) @app.route('/') def index(): return render_template('child.html',text = 'sheen') if __name__ == '__main__': app.run()
以上がPythonのJinja2とは何ですか?使い方?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Pythonリストスライスの基本的な構文はリストです[start:stop:step]。 1.STARTは最初の要素インデックス、2。ストップは除外された最初の要素インデックスであり、3.ステップは要素間のステップサイズを決定します。スライスは、データを抽出するためだけでなく、リストを変更および反転させるためにも使用されます。

ListSoutPerformArraysIn:1)ダイナミシジョンアンドフレーケンティオン/削除、2)ストーリングヘテロゼンダタ、および3)メモリ効率の装飾、ButmayhaveslightPerformancostsinceNASOPERATIONS。

toconvertapythonarraytoalist、usetheList()constructororageneratorexpression.1)importhearraymoduleandcreateanarray.2)useList(arr)または[xforxinarr] toconvertoalistは、largedatatessを変えることを伴うものです。

choosearraysoverlistsinperbetterperformance andmemoryeficiencyspecificscenarios.1)largeNumericaldatasets:Araysreducememoryusage.2)パフォーマンス - クリティカル操作:ArraysOfferSpeedBoostsfortsfortsclikeappendedoring.3)タイプリー:Arrayesenforc

Pythonでは、ループに使用し、列挙し、包括的なリストを通過することができます。 Javaでは、従来のループを使用し、ループを強化してアレイを通過することができます。 1。Pythonリストトラバーサル方法は、ループ、列挙、およびリスト理解のためのものです。 2。Javaアレイトラバーサル法には、従来のループとループ用の強化が含まれます。

この記事では、バージョン3.10で導入されたPythonの新しい「マッチ」ステートメントについて説明します。これは、他の言語のスイッチステートメントに相当するものです。コードの読みやすさを向上させ、従来のif-elif-elよりもパフォーマンスの利点を提供します

Python 3.11の例外グループは、複数の例外を同時に処理することで、同時シナリオと複雑な操作でエラー管理を改善します。

Pythonの関数注釈は、タイプチェック、ドキュメント、およびIDEサポートの関数にメタデータを追加します。それらはコードの読みやすさ、メンテナンスを強化し、API開発、データサイエンス、ライブラリの作成において重要です。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 中国語版
中国語版、とても使いやすい

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ホットトピック









