Джанго: Использование различных шаблонов для производства - PullRequest
2 голосов
/ 22 ноября 2010

В моем шаблоне base.html, который импортируется в каждый шаблон Django, у меня есть блок со скриптом Google Analytics:

<!-- GOOGLE ANALYTICS -->

<script type="text/javascript">
    bla bla...
</script>

Я бы хотел, чтобы этот сценарий включался только в процессе производства, но не во время разработки. Есть ли решение для этого сопоставимо с решением в setting.py?

import socket

if socket.gethostname() == 'my-laptop':
    DEBUG = TEMPLATE_DEBUG = True
else:
    DEBUG = TEMPLATE_DEBUG = False

Кто-нибудь знает тег шаблона, или я должен сделать свой собственный?

Ответы [ 5 ]

4 голосов
/ 22 ноября 2010

Вы можете добавить переменную DEBUG в контекстный процессор и просто поместить IF в этот блок.http://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext

from django.conf import settings
def debug_context(request):
    return {'DEBUG': settings.DEBUG}

Затем в вашем шаблоне:

{% if DEBUG %}
    STUFF
{% endif %}

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

2 голосов
/ 22 декабря 2013

In settings.py , Отметьте debug is True, также добавьте:

INTERNAL_IPS = (
    '127.0.0.1',
    'localhost',
)

Тогда вы можете использовать вещи в вашем шаблоне, как это:

{% if debug %}
<span>This is debug</span>
{% else %}
<span>This is production</span>
{% endif %}

Если хотите перейти на производство, установите debug на False.

Ref: http://www.djangobook.com/en/2.0/chapter09.html

0 голосов
/ 05 марта 2011

Я делаю следующее на многих сайтах, и это, кажется, работает очень хорошо.

Затем в моем каталоге статических медиа-файлов у меня есть копии base.css и base_dev.css. Я делаю всю свою разработку в файле base_dev.css, затем объединяю его с base.css перед запуском.

0 голосов
/ 22 ноября 2010

Шаблон, вероятно, не лучшее место, чтобы справиться с этим.

обычно вы пишете контекстный препроцессор , который обработает запрос и добавит флаг в ваш контекст (например, PRODUCTION = True). Затем вы можете использовать простой оператор if в шаблоне или, что еще лучше, написать простой пользовательский тег, который будет скрывать детали реализации из шаблона.

См. Также этот ответ .

0 голосов
/ 22 ноября 2010

Еще не видел такого тега шаблона.

Я более склонен использовать разные файлы setting.py для производства и разработки и включать код аналитики, как описано в этот ответ .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...