検索
ホームページバックエンド開発Python チュートリアルDjango の基本チュートリアル - テンプレート

注: Python のバージョンは 3.3.1、Django のバージョンは 1.5.1、オペレーティング システムは Windows 7 です。他のバージョンにはいくつかの違いがあり、読者は自分で調べることができます。

この問題は前の章で発見されたかもしれません。つまり、ビューがテキストを返すとき、HTML コードは Python コードにハードコーディングされます。 %s など。このように書くとプログラムが複雑になることが多く、また、HTML コードのプログラマーが Python コードを知っているとは限りません。つまり、現在の開発では HTML フロントエンド ページと Python バックエンドが分離されています。フロントエンドはページの表示のみを担当し、バックグラウンドはデータの処理やその他の操作のみを担当します。したがって、テンプレートは特に重要です。

では、テンプレートとは何ですか?

テンプレートは、ドキュメントのプレゼンテーションとコンテンツを分離するために使用されるテキストです。 テンプレートは、ドキュメントの表示方法を指定するプレースホルダーとさまざまな基本ロジック (テンプレート タグ) を定義します。 通常、テンプレートは HTML の生成に使用されますが、Django のテンプレートはテキストベースの形式でドキュメントを生成することもできます。簡単な例からテンプレートとは何かを学びましょう。 (この例は DjangoBook2 からのものです)

 <head><title>Ordering notice</title></head>
 <body>
 <h1 id="Ordering-nbsp-notice">Ordering notice</h1>
 <p>Dear {{ person_name }},</p>
 <p>Thanks for placing an order from {{ company }}. It&#39;s scheduled to
 ship on {{ ship_date|date:"F j, Y" }}.</p>
 <p>Here are the items you&#39;ve ordered:</p>
 <ul>
 {% for item in item_list %}
     <li>{{ item }}</li>
 {% endfor %}
 </ul>
 {% if ordered_warranty %}
     <p>Your warranty information will be included in the packaging.</p>
 {% else %}
     <p>You didn&#39;t order a warranty, so you&#39;re on your own when
     the products inevitably stop working.</p>
 {% endif %}
 <p>Sincerely,<br />{{ company }}</p>
 </body>
 </html>


上記のように、Python コードを {{...}} または {%...%} に置き換える方法はテンプレートです, 最初のように、{{person_name}} は実際には変数であり、{%for....%} または {% if...%} はループです。上記のコードの意味を深く掘り下げることはせずに、その使用方法を段階的に学習してみましょう。

>>> from django import template
>>> t = template.Template(&#39;My name is {{ name }}.&#39;)
>>> c = template.Context({&#39;name&#39;: &#39;Adrian&#39;})
>>> print(t.render(c))
My name is Adrian.
>>> c = template.Context({&#39;name&#39;: &#39;Fred&#39;})
>>> print(t.render(c))
My name is Fred.


上記のコードを見ると、試してみたくなりますが、2行目でエラーが発生します。一般的に、発生する可能性のある唯一のエラーは「DJANGO_SETTINGS_MODULE」エラーです。これは、Django が DJANGO_SETTINGS_MODULE 環境変数を検索するときに、この環境変数が settings.py に設定されており、Python シェルを直接起動するとどの構成であるかを認識できないためです。使用するファイル。たとえば、mysite が Python 検索パスにあると仮定すると、DJANGO_SETTINGS_MODULE を「mysite.settings」に設定する必要があります。したがって、環境変数を設定する手間を避けるためには、次のようにして Python シェルを起動する必要があります。

python manage.py シェル

これにより、不慣れな環境変数を設定する手間が省けます。

そのコード部分を分析してみましょう。

>>> from django import template  #从django中导入template对象
>>> t = template.Template(&#39;My name is {{ name }}.&#39;)  #使用template对象的Template()方法
>>> c = template.Context({&#39;name&#39;: &#39;Adrian&#39;})  #使用template对象的Context()函数给赋值,比如name的值就是Adrian,Context()的()里面是一个字典
>>> print(t.render(c))   #渲染模板,也就是讲Context赋值后的name的值Adrian替换上面Template()中的{{name}}并输出
My name is Adrian.
>>> c = template.Context({&#39;name&#39;: &#39;Fred&#39;})
>>> print(t.render(c))
My name is Fred.


上記の例からわかるように、テンプレートを使用するには 3 つの手順があります。 1. Template 関数を呼び出します。 2. Context 関数を呼び出します。 3. render 関数を呼び出します。それはとても簡単です。


いくつかのコードを通して Context() 関数について説明しましょう。

#代码段1:
>>> from django.template import Template,Context
>>> t=Template(&#39;hello,{{name}}&#39;)
>>> for name in (&#39;A&#39;,&#39;B&#39;,&#39;C&#39;):
...     print(t.render(Context({&#39;name&#39;:name})))
...
hello,A
hello,B
hello,C
#代码段2:
>>> from django.template import Template,Context
>>> person={&#39;name&#39;:&#39;Thunder&#39;,&#39;age&#39;:&#39;108&#39;}
>>> t=Template(&#39;{{person.name}} is {{person.age}} years old!&#39;)
>>> c=Context({&#39;person&#39;:person})#后面的这个person是一个字典
>>> t.render(c)
&#39;Thunder is 108 years old!&#39;
#代码段3:
>>> from django.template import Template,Context
>>> t=Template(&#39;Item 2 is {{items.2}}&#39;)#items.2的意思是调用items列表的第3个元素,因为列表的索引是从0开始的
>>> c=Context({&#39;items&#39;:[&#39;Apple&#39;,&#39;Banana&#39;,&#39;Orange&#39;]})
>>> t.render(c)
&#39;Item 2 is Orange&#39;


注: 上記の items.2 を items.-1 またはその他の負のインデックスにすることはできません。

上記の 3 つのコードをよく見てください。単に推論を行っているだけですか?また、デフォルトでは、変数が存在しない場合、テンプレート システムはそれを空の文字列として表示し、失敗を示すために何も行いません。



声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Pythonの融合リスト:適切な方法を選択しますPythonの融合リスト:適切な方法を選択しますMay 14, 2025 am 12:11 AM

Tomergelistsinpython、あなたはオペレーター、extendmethod、listcomfulting、olitertools.chain、それぞれの特異的advantages:1)operatorissimplebutlessforlargelist;

Python 3の2つのリストを連結する方法は?Python 3の2つのリストを連結する方法は?May 14, 2025 am 12:09 AM

Python 3では、2つのリストをさまざまな方法で接続できます。1)小さなリストに適したオペレーターを使用しますが、大きなリストには非効率的です。 2)メモリ効率が高い大規模なリストに適した拡張方法を使用しますが、元のリストは変更されます。 3)元のリストを変更せずに、複数のリストをマージするのに適した *オペレーターを使用します。 4)Itertools.chainを使用します。これは、メモリ効率が高い大きなデータセットに適しています。

Python Concatenateリスト文字列Python Concatenateリスト文字列May 14, 2025 am 12:08 AM

Join()メソッドを使用することは、Pythonのリストから文字列を接続する最も効率的な方法です。 1)join()メソッドを使用して、効率的で読みやすくなります。 2)サイクルは、大きなリストに演算子を非効率的に使用します。 3)リスト理解とJoin()の組み合わせは、変換が必要なシナリオに適しています。 4)redoce()メソッドは、他のタイプの削減に適していますが、文字列の連結には非効率的です。完全な文は終了します。

Pythonの実行、それは何ですか?Pythonの実行、それは何ですか?May 14, 2025 am 12:06 AM

pythonexexecutionistheprocessoftransforningpythoncodeintoexecutabletructions.1)interpreterreadSthecode、変換intobytecode、thepythonvirtualmachine(pvm)executes.2)theglobalinterpreeterlock(gil)管理委員会、

Python:重要な機能は何ですかPython:重要な機能は何ですかMay 14, 2025 am 12:02 AM

Pythonの主な機能には次のものがあります。1。構文は簡潔で理解しやすく、初心者に適しています。 2。動的タイプシステム、開発速度の向上。 3。複数のタスクをサポートするリッチ標準ライブラリ。 4.強力なコミュニティとエコシステム、広範なサポートを提供する。 5。スクリプトと迅速なプロトタイピングに適した解釈。 6.さまざまなプログラミングスタイルに適したマルチパラダイムサポート。

Python:コンパイラまたはインタープリター?Python:コンパイラまたはインタープリター?May 13, 2025 am 12:10 AM

Pythonは解釈された言語ですが、コンパイルプロセスも含まれています。 1)Pythonコードは最初にBytecodeにコンパイルされます。 2)ByteCodeは、Python Virtual Machineによって解釈および実行されます。 3)このハイブリッドメカニズムにより、Pythonは柔軟で効率的になりますが、完全にコンパイルされた言語ほど高速ではありません。

ループvs whileループ用のpython:いつ使用するか?ループvs whileループ用のpython:いつ使用するか?May 13, 2025 am 12:07 AM

useaforloopwhenteratingoverasequenceor foraspificnumberoftimes; useawhileloopwhentinuninguntinuntilaConditionismet.forloopsareidealforknownownownownownownoptinuptinuptinuptinuptinutionsituations whileoopsuitsituations withinterminedationations。

Pythonループ:最も一般的なエラーPythonループ:最も一般的なエラーMay 13, 2025 am 12:07 AM

pythonloopscanleadtoErrorslikeinfiniteloops、ModifiningListsDuringiteration、Off-Oneerrors、Zero-dexingissues、およびNestededLoopinefficiencies.toavoidhese:1)use'i

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

DVWA

DVWA

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール