Latest web development tutorials

Django-Vorlage

Im letzten Kapitel verwenden wir django.http.HttpResponse () zur Ausgabe von "Hallo Welt!". Die Art und Weise die Daten miteinander vermischt werden, mit dem Ziel, nicht das MVC treffen gedacht Django.

In diesem Kapitel werden wir Ihnen Django Anwendungsvorlage erklären wird, ist die Vorlage ein Text für die Präsentation und Inhalt separaten Dokument.


Vorlage Anwendungsbeispiele

Wir folgten dem vorherigen Abschnitt des Projekts werden unter Hello World Verzeichnis Vorlagen Verzeichnis angelegt und etablieren hello.html Datei, die gesamte Verzeichnisstruktur ist wie folgt:

HelloWorld/
|-- HelloWorld
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py
|   |-- urls.pyc
|   |-- view.py
|   |-- view.pyc
|   |-- wsgi.py
|   `-- wsgi.pyc
|-- manage.py
`-- templates
    `-- hello.html

hello.html Datei Code ist wie folgt:

<h1>{{ hello }}</h1>

Wir wissen aus der Template-Variable doppelte Klammern zu verwenden.

Als nächstes müssen wir den Pfad Django Template - Datei, ändern Sie die Helloworld / settings.py, ändern VORLAGEN die DIRS auf[BASE_DIR + "/ templates", erklären ], wie folgt:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR+"/templates",],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

Wir ändern jetzt view.py, fügen Sie ein neues Objekt, um Daten an die Vorlage einreichen:

# -*- coding: utf-8 -*-

#from django.http import HttpResponse
from django.shortcuts import render

def hello(request):
    context          = {}
    context['hello'] = 'Hello World!'
    return render(request, 'hello.html', context)

Wir können sehen, dass wir hier anstatt Httpresponse vor dem Gebrauch machen verwendet. Rendern verwendet auch ein Wörterbuch Kontext als Parameter.

Wesentliche Elemente im Kontext-Wörterbuch "Hallo" entsprechen den Variablen in der Vorlage "{{hallo}}".

Dann besuchen Sie http://192.168.45.3:8000/hello/ besuchen, können Sie die Seite:

Dann haben wir die Vorlage, um die Ausgangsdaten zu verwenden, so dass der Datenansicht Trennung.

Als nächstes werden wir die gemeinsame Vorlage Syntaxregeln einzuführen.


Django Template-Tags

if / else-Tag

Die grundlegende Syntax lautet wie folgt:

{% if condition %}
     ... display
{% endif %}

oder:

{% if condition1 %}
   ... display 1
{% elif condiiton2 %}
   ... display 2
{% else %}
   ... display 3
{% endif %}

den Bedingungen entsprechend, ob die Ausgabe zu bestimmen. if / else unterstützt verschachtelt.

{% If%} Tag akzeptiert und, oder oder nicht, ein Urteil über die Schlüsselwörter, um mehrere Variablen zu machen, oder Variablen negiert (nicht), zum Beispiel:

{% if athlete_list and coach_list %}
     athletes 和 coaches 变量都是可用的。
{% endif %}

für Etiketten

{% For%} ermöglicht es uns, eine Sequenz zu iterieren.

Und Python Fall für ähnliche Aussagen, Schleifensyntax ist für X in Y, Y ist die Sequenz in einer Schleife über und X ist ein Variablenname in jedem einzelnen Zyklus verwendet.

Jedes Mal durch die Schleife, wird das Template-System machen alle {% for%} {% endfor%} Inhalt zwischen und.

Zum Beispiel, da eine Liste der Athleten athlete_list Variablen, können wir den folgenden Code verwenden diese Liste anzuzeigen:

<ul>
{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% endfor %}
</ul>

Beschriften Sie eine Liste hinzuzufügen, umgekehrt, so dass die Rück Iterator werden:

{% for athlete in athlete_list reversed %}
...
{% endfor %}

Sie können {% für%} Tag verschachtelt werden:

{% for athlete in athlete_list %}
    <h1>{{ athlete.name }}</h1>
    <ul>
    {% for sport in athlete.sports_played %}
        <li>{{ sport }}</li>
    {% endfor %}
    </ul>
{% endfor %}

IfEqual / ifnotequal Tag

{% IfEqual%} Tag vergleicht zwei Werte, wenn sie gleich sind, werden alle Werte in der {% IfEqual%} und {% endifequal%} zu sein.

Das folgende Beispiel vergleicht die Template-Variablen Benutzer und zwei Current:

{% ifequal user currentuser %}
    <h1>Welcome!</h1>
{% endifequal %}

Und {% if%} Ähnlich {% IfEqual%} unterstützt eine optionale {% else%} tag: 8

{% ifequal section 'sitenews' %}
    <h1>Site News</h1>
{% else %}
    <h1>No News Here</h1>
{% endifequal %}

Hinweise Tab

Django Anmerkungen mit {##}.

{# 这是一个注释 #}

Filter

Template Filter kann vor dem Ändern sie in der Variablen angezeigt werden, das Filterrohr Charakter, wie folgt:

{{ name|lower }}

{{Name}} Variable nach niedrigeren Filterverarbeitung ist, dokumentieren Text in Großbuchstaben Klein konvertieren.

Filterrohrstutzen kann * *, beide sagen, einem Ausgangsfilterrohren und kann als Eingabe für die nächste Pipeline verwendet werden:

{{ my_list|first|upper }}

Das erste Element des obigen Beispiels und wandeln es in Großbuchstaben geschrieben.

Einige Filter haben Parameter. Nachdem die Filterparameter durch einen Doppelpunkt und immer doppelte Anführungszeichen. Zum Beispiel:

{{ bio|truncatewords:"30" }}

Diese Variable wird die ersten 30 Worte des Bio anzuzeigen.

Weitere Filter:

  • addslashes: einen Backslash Backslash vor jedem Apostroph oder Anführungszeichen hinzuzufügen.
  • Datum: Drücken Sie die Format-String-Argument Format mit einem bestimmten Datum oder Datetime-Objekt-Instanz:
    {{ pub_date|date:"F j, Y" }}
  • Länge: Gibt die Länge der Variablen.

include-Tag

{% Fügen%} Tag ermöglicht andere Inhalte, die eine Vorlage in der Vorlage enthält.

Die beiden folgenden Beispiele sind nav.html Vorlage enthalten:

{% include "nav.html" %}

Vorlage Vererbung

Vorlagen können Weise erben Multiplexen zu erreichen.

Als Nächstes erstellen wir Verzeichnisvorlagen vor base.html Projektdatei hinzufügen, wie folgt:

<html>
  <head>
    <title>Hello World!</title>
  </head>

  <body>
    <h1>Hello World!</h1>
    {% block mainbody %}
       <p>original</p>
    {% endblock %}
  </body>
</html>

Der obige Code, Block Tag mit dem Namen main ist, dass es Nachfolger Teile zu ersetzen sein.

Alle {% block%} Tag teilt die Template-Engine, die Kind-Vorlagen, diese Teile außer Kraft setzen können.

hello.html base.html geerbt, und ersetzen Sie bestimmte Block, der Code hello.html wie folgt geändert:

{% extends "base.html" %}

{% block mainbody %}
<p>继承了 base.html 文件</p>
{% endblock %}

Die erste Zeile des Codes zeigt hello.html base.html Datei geerbt. Wir können hier den gleichen Namen von Block-Tag sehen base.html entsprechenden Block zu ersetzen.

Revisit Adresse http://192.168.45.3:8000/hello/, Ausgabeergebnisse sind wie folgt: