Рубрики
Без рубрики

Джанго шаблон

Это продолжение статьи веб -приложения Python Django. В предыдущей статье мы использовали Djang … Tagged with Python, начинающие, Django, Webdev.

Это продолжение 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 %}
{% 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”