Heim  >  Artikel  >  Backend-Entwicklung  >  Django-Grundlagen-Tutorial – Vorlagen

Django-Grundlagen-Tutorial – Vorlagen

高洛峰
高洛峰Original
2016-10-17 14:16:161088Durchsuche

Hinweis: Die Python-Version ist 3.3.1, die Django-Version ist 1.5.1 und das Betriebssystem ist Windows 7. Es gibt einige Unterschiede in anderen Versionen, die der Leser selbst erkunden kann.

Im vorherigen Kapitel haben Sie möglicherweise das Problem entdeckt, dass der HTML-Code im Python-Code fest codiert ist, wenn die Ansicht Text zurückgibt. Wie %s und so weiter. Das Schreiben auf diese Weise macht das Programm oft komplizierter und wird nach der Änderung sehr mühsam. Darüber hinaus kennen HTML-Code-Programmierer möglicherweise nicht unbedingt den Python-Code. Die aktuelle Entwicklung trennt im Allgemeinen die HTML-Frontend-Seite und das Python-Backend. Das Frontend ist nur für die Anzeige der Seite verantwortlich, das Hintergrundprogramm ist nur für die Datenverarbeitung und andere Vorgänge verantwortlich. Daher sind Vorlagen besonders wichtig.

Was ist also eine Vorlage?

Eine Vorlage ist ein Text, der die Präsentation und den Inhalt eines Dokuments trennt. Vorlagen definieren Platzhalter und verschiedene Teile der Grundlogik (Vorlagen-Tags), die angeben, wie das Dokument angezeigt werden soll. Vorlagen werden normalerweise zum Generieren von HTML verwendet, aber die Vorlagen von Django können auch Dokumente in jedem textbasierten Format generieren. Lassen Sie uns anhand eines einfachen Beispiels lernen, was eine Vorlage ist. (Dieses Beispiel stammt von DjangoBook2)

 <head><title>Ordering notice</title></head>
 <body>
 <h1>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>

🎜>Wie oben gezeigt, die Möglichkeit, Python-Code durch {{...} zu ersetzen } oder {%...%} ist eine Vorlage. {{person_name}} ist tatsächlich eine Variable, und {%for.. ..%} oder {% if ...%} usw. sind Schleifen . Ohne näher auf die Bedeutung des obigen Codes einzugehen, lernen wir Schritt für Schritt, wie man ihn verwendet.


>>> 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.

Wenn Sie den obigen Code sehen, können Sie es kaum erwarten, ihn auszuprobieren, und das Ergebnis ist An In der zweiten Zeile ist ein Fehler aufgetreten. Im Allgemeinen ist der einzige Fehler, der auftreten kann, der Fehler „DJANGO_SETTINGS_MODULE“. Dies liegt daran, dass Django bei der Suche nach der Umgebungsvariablen DJANGO_SETTINGS_MODULE in „settings.py“ festgelegt ist und beim direkten Starten der Python-Shell nicht bekannt ist, welche Konfiguration vorliegt zu verwendende Datei. Angenommen, „mysite“ befindet sich in Ihrem Python-Suchpfad, dann sollte DJANGO_SETTINGS_MODULE auf „mysite.settings“ gesetzt sein. Um also den Aufwand beim Festlegen von Umgebungsvariablen zu vermeiden, sollten wir die Python-Shell wie folgt starten.

Python manage.py Shell

Dies erspart Ihnen die Mühe, Umgebungsvariablen zu konfigurieren, mit denen Sie nicht vertraut sind.

Lassen Sie uns diesen Codeabschnitt analysieren.

>>> 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.

Wie Sie dem obigen Beispiel entnehmen können, gibt es drei Schritte zur Verwendung von Vorlagen. 1. Rufen Sie die Template-Funktion auf. 2. Rufen Sie die Kontextfunktion auf. 3. Rufen Sie die Render-Funktion auf. So einfach ist das.


Lassen Sie uns anhand einiger Codes über die Context()-Funktion sprechen.


Hinweis: Die oben genannten Elemente.2 können nicht Elemente.-1 oder ein anderer negativer Index sein.
#代码段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;

Schauen Sie sich die oben genannten drei Codeteile genau an. Ziehen Sie nur Schlussfolgerungen? Wenn eine Variable nicht vorhanden ist, zeigt das Vorlagensystem sie standardmäßig als leere Zeichenfolge an und unternimmt nichts, um einen Fehler anzuzeigen.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn