Django: шаблон в зависимости от режима отладки

Хочу привести рецепт того, как с помощью создания собственного шаблонного тега заставить меняться шаблон в зависимости от режима отладки.

Режимом отладки управляет переменная DEBUG в файле settings.py. Если DEBUG == True, то Django выводит отладочную информацию при возникновении ошибок.

Отладка должна быть выключена на боевом сервере и включена на сервере разработки. Это правило можно использовать, чтобы на основании переменной DEBUG, определять на каком сервере мы находимся.

В Django генерацией страниц из шаблонов занимаются представления. Представим ситуацию, когда есть базовый шаблон, использующийся во множестве представлений, и понадобилось изменять шаблон в зависимости от какого-то условия. Править все представления слишком муторно и можно что-нибудь пропустить. Тогда на помощь приходят собственные теги.

При написании статьи я использовал Django версии 1.8.

Собственный тег можно определить только в приложении, поэтому создадим приложение app_for_template_tags командой:


python3 manage.py startapp app_for_template_tags

Приложение необходимо добавить в INSTALLED_APPS в файле settings.py:

INSTALLED_APPS = (
    # Другие приложения,
    'app_for_template_tags',
)

Теги должны определяться в пакете templatetags, поэтому надо создать папку templatetags с пустым файлом __init__.py в каталоге app_for_template_tags.

Создадим модуль в котором будет определение тега. Пусть модуль называется debug_mode_tag.py.

Содержимое debug_mode_tag.py:

from django import template
from django.conf import settings

register = template.Library()

@register.assignment_tag
def debug_mode_tag():
     return settings.DEBUG

Имя функции debug_mode_tag соответствует имени нового тега. Имя файла не обязательно должно совпадать с именем функции. Кроме того функций может быть несколько.

Если разработка ведется на сервере разработчика и включен режим отладки, то функция debug_mode_tag вернет True, иначе False.

В шаблоне тег используется следующим образом:

{% load debug_mode_tag %}

{% debug_mode_tag as debug_mode %}

{% if debug_mode %}
  <!-- Html-код, который будет
  показан, если включена отладка. -->
{% endif %}

В первой строке подключается модуль debug_mode_tag. Во второй строке создается переменная debug_mode, значение которой будет равно значению, которое вернула функция debug_mode_tag.

Итог

Для решения понадобилось создать файловую структуру:

Django тег debug_mode_tag

Создать функцию в модуле debug_mode_tag.py и добавить приложение в settings.py.

Подробное описание создания тегов можно почитать в документации на Django.

Реклама

Работа с мультиметром Agilent 34410A на Питоне

Мультиметр Agilent 34410A можно подключить к локальной сети.

Зная IP-адрес или сетевое имя, можно открыть сокет на порту 5025 и посылать команды на языке SCPI, а также принимать измерения.

В Питоне работать с сокетами можно благодаря модулю socket.

Пример программы, которая проводит измерение переменного напряжения


# IP-адрес и порт мультиметра
ip_address = '10.42.0.79'
port = 5025

# Модуль для работы с сокетами
import socket

# Создать сокет
s = socket.socket()

# Установить соединение
address = (ip_address, port)
s.connect(address)

# Установить таймаут чтения/записи в секундах
s.settimeout(1.0)

# Команды мультиметру:

# Установить режим измерения: переменное напряжение
s.send(b'CONFigure:VOLTage:AC\n')

# Настроить запуска измерения по команде '*TRG'
s.send(b'TRIGger:SOURce BUS\n')

# Включить ожидание запуска
s.send(b'INITiate\n')

# Запустить измерение
s.send(b'*TRG\n')

# Передать измерение
s.send(b'FETCh?\n')

# Получить и отобразить измерение
value = s.recv(100).decode('utf-8')
print(value)

# Закрыть сокет
s.close()

Ссылки

Установка Python и Django и запуск веб-приложения на Windows

  1. Скачайте Python последней версии с официального сайта.
  2. При установке выберите «Add python.exe to Path», чтобы была возможность запускать Python в командной строке.
    Установка переменной PATH
  3. После установки запустите командную строку и установите Django командой:
    pip install django

    pip — это менеджер пакетов, который позволяет устанавливать программы, написанные на Python из специального репозитория.

  4. После установки Django перейдите в папку с веб-приложением:
    cd "путь к папке содержащей файл manage.py"
  5. Запустите веб-приложение:
    python manage.py runserver

    Запустится простой веб-сервер, встроенный в Django.

  6. В браузере откройте адрес http://localhost:8000/.