Django--テンプレート

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

  応答のために使用されるHTMLテンプレートファイル、ページデザインとPythonコードよりクリーン分離を維持しやすいです。私たちは、Djangoの使用できる  テンプレートシステム  の問題は、この章で詳しく説明されるこのモデルを実装する(テンプレートシステムを)。

2、変数テンプレート構文

  方法、ビュー広がり関数テンプレートにテンプレートができ、次いで{{「変数名」}}参照変数を辞書可変方法をレンダリングします。

  ビュー:

デフ指数(リクエスト):
 = ' アレックス' 
    年齢 = 22人の
    学生 = [ ' アレックス'' taibai '' nvshenは' ] 
    
    を返す(リクエスト、レンダリング' index.htmlを'、{ ' 名前'名前:' 年齢':年齢、' 学生':学生}

  自分自身を設定することができ、キーのキー名 

  テンプレート:

<身体> 
    <p型>名{名}} {</ p型> 
    <p型>年齢{{年齢}} -歳</ p型> 
    <p型>学生students.0}} {{</ p型>   この方法リスト内の特定の要素を抽出し、インデックス 
    <P>学生students.1} {} {</ P> 
</ BODY>

  あなたは多くの変数を渡す必要がある場合は、あまり便利でレンダリングするので、地元の人たち()メソッドを使用するには、一つ一つを書きます

デフ指数(要求):
 = ' アレックス' 
    年齢 = 22人の
    学生 = [ ' アレックス'' taibai '' nvshen ' ]  = { ' 名前'' アレックス'' 年齢' 100、' 性別'他の}
     リターンがレンダリング(リクエスト、index.htmlを、地元の人々())

  これは、すべての変数に渡すことができます。

3、フィルタテンプレート

  変数の特定の形式{{|フィルタ:パラメータ}}

  デフォルト:変数がfalseまたは空の場合、デフォルト値が与えられました。それ以外の場合は、変数の値を使用します。例えば:

<P> {{book_list1 |デフォルト:' 一致するブック' }} </ P>

  長さ:戻り値の長さ。これは、文字列とリストの両方を動作します。例えば:

{{リスト|長さ}}

  filesizeformat:将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB''4.1 MB''102 bytes', 等等)。例如:

{{fail_size | filesizeformat}}

  日付:変換時間必要な形式。例えば:

  ビュー:

 値= datetime.datetime.now()

  テンプレート:

{{値|日付:" はYmd " }} 

  これは、ことができます。

{{値|日付:" Y / M / D " }} 

  スライス:文字列セクション。例えば:

{{値|スライス:" 2:-1 " }}

  truncatechars:文字列が指定した文字数を超えている場合、それは切り捨てられます。翻訳可能な文字列が省略記号の末尾に列を切り捨てられます(「...」)。例えば:

  ビュー:

市= あなたは古いものと灰色と睡眠に満ちている、火によってうなずいたとき、この本をテイクダウン、そしてゆっくりと読んで、そして優しい表情の夢

  テンプレート:

<P> {{市| truncatechars:5}} </ P>

  結果:WHE ...

  注意:... 3つのバイトの位置を占めなければなりません。

  安全:Djangoはセキュリティのために、自動的に種々の標識を翻訳し、時には我々は彼の翻訳に躊躇し、私たちは安全を必要としています。例えば:

  直接変数にビュー:(、界面での文字列を生成し、フィルタ)はタグAを生成するために、安全で添加しなければなりません

リンク= " <a href=の'http://www.baidu.com'>点我</a>を"

  テンプレート:

 <P> {{リンク|安全}} </ P>

 

図4に示すように、テンプレートタグ

タグの各要素を通ります。例えば:

{%ための person_list%}
     <P> {{person.name}} </ P> 
{%ENDFOR%}

  辞書も利用可能です。

{%ためのキー、ヴァル dic.items%}
     <P> {{キー}}:{{ヴァル}} </ P> 
{%ENDFOR%}

  独自のメソッドを移動するためのタブ。

  forloop.counter:この世代は、いくつかのサイクルが得る最初の要素です。

{%ブックにおける book_listの%}
         <LI> {{forloop.counter}}、{{書籍}} </ LI> 
    {%ENDFOR%}

  forloop.counter0:上記のように、しかし、ゼロからの変更。

  forloop.revcounter:ターン

  forloop.revcounter0:ゼロからのターン

  forloop.first:ディスプレイがTrueの場合、この要素を分析することは、取得した最初のサイクルではありません。

  forloop.last:この要素を分析するには、ディスプレイがFalseで、前回のサイクルでは得られません。

以下のために...空のタグ:のための  オプションとラベル{%  空  %}  節、セットを与えるために、空であるか、またはそれが見つからない場合、操作があってもよいです。

{%ための person_list%}
     <P> {{person.name}} </ P> 

{%空%}
     <P>申し訳ありませんが、人ここで</ P> 
{%ENDFOR%}

もしタグ:{%  場合  %は}である変数評価は、その値が「真」である場合(存在し、空ではない、としない偽のブール値型である)、ブロック意志出力対応するコンテンツ。

{%IF NUM> 100 または NUM <0%}
    無効</ P> <P> 
{のelif NUM> 80  NUM <100%}
     <P>エリート</ P> 
{他の}
     <P>港ライブそれ</ P> 
{%} ENDIF%

  ラベルのタグ場合に設定することができます:

{%ための person_listの%} 
    {なら person.age> 900パーセント}
         <P> {{person.name}}、{{person.age}} </ P> 

    {%ENDIF%} 

{%ENDFOR%}

タグと:単純な名前のキャッシュに複雑な変数を使用し、それは非常に便利であるとき、あなたは何回も(データベースアクセスなど)メソッドを使用する必要がある場合、。

{名前= person_list.2.nameの%と%}
     <P> {{名前}} </ P> 
    {%ENDWITHの%}

  これは、プレゼンス名でperson_list.2.name変更を入れ、常にこのような複雑なために見ていません。

csrf_tokenレーベル:ラベルは、ユーザー認証のために、トークンを生成し、クロスサイトリクエストフォージェリを保護するために使用されます。

5、継承されたテンプレート

  私たちは同じですが、ただ異なるところ個々のラベルの複数のページの一般的なフレームワークを持っている場合は、すべてのページ私たちは、テンプレートのすべてを書き出します場合、に、簡潔にコードのため、コードの重複がたくさんなので、この時間があるでしょう私たちは他のテンプレートを継承使用するためのファイルにこれらの反復コードを使用することができ、このファイルはマスターと呼ばれています。

  ブロック - マスターでは、ボックス(フック)として知られている他のサブテンプレートのタグを追加するための具体的な場所は、あります。

  テンプレートbase.html

<DIV クラス = " COL-MD-。9 " > 
                {%ブロック競合%}
                     <H3> WELCOM </ H3>#サブパレットないコンテンツ、ここではコンテンツがコンテンツであれば、カバーここで、サブテンプレート、返されない場合コンテンツ。
                {%の末端ブロック%}
  </ div>

  サブテンプレートのindex.html

{%は拡張' base.html '}


    の<div クラス = " ジャンボトロン" > 
                  <H1>こんにちは、世界!</ H1> 
                  <P> ... </ P> 
                  <P> < クラス = " BTN btn-プライマリBTN-LG "のhref = " "の役割= " ボタンは" >詳細</a> </ P>学ぶ
                </ div> 
{%の末端ブロック%}を

  ここで{% extends %} システムにアクセスするときに注意してください、base.htmlに戻って第1の向きに、主人はbase.htmlあるシステム、index.htmlのページを指示するラベル:{% extends %} ラベルは、サブテンプレートの最初の行でなければなりません。

  ボックスのマスター複数設けられ、より良いことができます。

  あなたはボックスの内容とサブテンプレートを表示する必要がある場合は、{{block.super}}タグを使うことができ、

{%が延び' base.html '} 


{%ブロックは%を争う} 
    {{block.super}}

     <divのクラス = " ジャンボトロン" > 
                  <H1>こんにちは、世界!</ H1> 
                  <P> ... </ P> 
                  <P> <a クラス = "BTN btn-primary btn-lg" href= "#" role= " ボタン">詳細</a> </ P>学ぶ
                </ div> 
{%の末端ブロック%}

  読みやすくするため、また、あなたの与えることができます  {% endblock %} タグ  の名前を  。例えば:

{%ブロックコンテンツ%} 
... 
{%の末端ブロック含有量%}  

  同じ名前の複数のテンプレートで定義することができない  block タグ。

 

  

 

    

 

 

  

おすすめ

転載: www.cnblogs.com/490144243msq/p/11575994.html