Это продолжение Python Django Статья веб -приложения.
В Предыдущая статья , мы использовали django.http.httpresponse ()
Чтобы вывести слово «Привет, мир!». Этот способ смешивания данных с представлениями не соответствует мышлению Django MVC.
Если хотите, вы можете поместить свой Приложение Python Online
Шаблоны
В проекте в нашей предыдущей статье мы создаем каталог шаблонов в каталоге Helloworld и создаем файл hello.html, вся структура каталогов выглядит следующим образом:
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
Привет.html Код файла выглядит следующим образом:
{{ hello }}
Мы знаем из шаблона, что переменная использует двойные скобки.
Далее нам нужно объяснить путь к файлу шаблона в django, изменить Helloworld/sets.py, изменить Dirs в шаблонах, чтобы быть base_dir/шаблоны следующим образом:
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', ], }, }, ]
Теперь мы изменим view.py, чтобы добавить новый объект для отправки данных в шаблон:
#-*- 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)
Как видите, здесь мы заменили Httpresponse, который мы использовали. Рендерин также использует словарный контекст в качестве аргумента.
Ключевое значение элемента в контекстном словаре «Привет» соответствует переменной в шаблоне.
Посетите еще раз в/Hello/чтобы увидеть страницу:
Это позволяет нам использовать шаблоны для выходных данных, чтобы данные могли быть отделены от представления.
Далее мы рассмотрим синтаксические правила, которые обычно используются в шаблоне.
Джанго шаблонный язык
if/else метка
Как и на языке программирования Python, Tempates позволяют использовать если утверждения Анкет Основной формат синтаксиса заключается в следующем:
{% if condition %} ... display {% endif %}
Или же:
{% if condition1 %} ... display 1 {% elif condiiton2 %} ... display 2 {% else %} ... display 3 {% endif %}
Это определяет, что вывод основан на условиях. Если/иначе поддерживает гнездование.
{ % if %}
тег принимает и
, или
и не
Ключевые слова для оценки нескольких переменных или обратить вспять переменные (не), например:
{% if athlete_list and coach_list %} .... {% endif %}
для тегов
{ % для %}
позволяет нам итерации по последовательности. Это похоже на Python’s для петли Анкет
-
{% for athlete in athlete_list %}
- {{ athlete.name }} {% endfor %}
Добавить перевернут
Чтобы отметить так, чтобы список был обработан обратно:
{% for athlete in athlete_list reversed %} ... {% endfor %}
Вы можете гнездиться с хэштегом:
{% for athlete in athlete_list %}{{ athlete.name }}
-
{% for sport in athlete.sports_played %}
- {{ sport }} {% endfor %}
ifequal/ifnotequal
Когда они равны, { % ifequal %}
Метка отображает все значения:
{% ifequal user currentuser %}Welcome!
{% endifequal %}
Похоже на if-statement , { % ifequal %}
и { % else %}
Хэштег может быть использован.
{% ifequal section 'sitenews' %}Site News
{% else %}No News Here
{% endifequal %}
Включите этикетку
Хэштег позволяет включать содержание других шаблонов в шаблон.
Оба примера содержат шаблон NAV.HTML:
{% include "nav.html" %}
Шаблон наследование
Шаблоны могут быть повторно использованы унаследованным образом.
Давайте начнем с создания файла base.html в каталоге шаблонов для предыдущего проекта, кодированный так:
Hello World! Hello World!
{% block mainbody %}original
{% endblock %}
В приведенном выше коде блок -тег, называемый Mainbody, является той частью, которую можно заменить.
Все теги { % block %}
сообщает шаблонному двигателю, что Subtemplate может перегружать эти части.
Hello.html наследует base.html и заменяет конкретный блок, Hello.html модифицированный код следующим образом:
{% extends "base.html" %} {% block mainbody %}base.html
{% endblock %}
Первая строка кода объясняет, что hello.html наследует файл base.html. Затем определяется блок основного тела.
Оригинал: “https://dev.to/toebes618/django-template-53dl”