#python #django #django-templates #django-settings
#python #django #django-шаблоны #django-настройки
Вопрос:
Я пытался настроить процессор контекста шаблона, подобный тому, который упоминается в этой статье, чтобы я мог предоставлять информацию для каждого шаблона.
Я написал эту функцию в views.py:
def items_in_cart(request):
"""Used by settings.TEMPLATE_CONTEXT_PROCESSORS to provide an item count
to every template"""
cart, lines = get_users_cart_and_lines(request)
return {'items_in_cart': lines.count()}
И затем я добавил эту строку в settings.py:
TEMPLATE_CONTEXT_PROCESSORS = ('Store.views.items_in_cart',)
Но теперь всякий раз, когда я захожу на любую страницу, я получаю эту ошибку:
ImproperlyConfigured at /
Put 'django.contrib.auth.context_processors.auth' in your TEMPLATE_CONTEXT_PROCESSORS setting in order to use the admin application.
Я сделал что-то не так? Что здесь происходит? Я попытался выполнить то, что указано в ошибке, и затем он отобразит страницу, на которой отсутствуют все мои таблицы стилей и изображения.
Ответ №1:
В Django установлен набор TEMPLATE_CONTEXT_PROCESSORS по умолчанию, который вам нужно добавить вручную при добавлении вашего собственного. http://docs.djangoproject.com/en/1.3/ref/settings/#template-context-processors
В зависимости от вашей версии Django они разные, однако при использовании Django 1.3 у вас может получиться что-то вроде следующего
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.contrib.messages.context_processors.messages",
"Store.views.items_in_cart",
)
Комментарии:
1. хм, могу ли я просто добавить свой в существующий список по умолчанию? Например, TEMPLATE_CONTEXT_PROCESSORS = secret_default_location. TEMPLATE_CONTEXT_PROCESSORS (‘Store.views.items_in_cart’,)
2. Вы должны иметь возможность использовать TEMPLATE_CONTEXT_PROCESSORS = (‘Store.views.items_in_cart’,) для добавления к значениям по умолчанию
3. Настройки django по умолчанию могут быть импортированы с помощью
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS
над вашей строкой для добавления. Затем вы можете добавить к этому с помощьюTEMPLATE_CONTEXT_PROCESSORS = ('Store.views.items_in_cart',)
4. В Django 1.10 значение удалено из,
global_settings
и следует использовать новуюTEMPLATES
настройку. Как следует переносить код, подобный приведенному выше, который добавляет настройки по умолчанию? Следует ли их просто включать вручную? Есть ли еще значение по умолчанию?