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.

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


person Greg    schedule 23.05.2011    source источник


Ответы (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",
)
person PiGGeH    schedule 23.05.2011
comment
хм, могу я просто добавить свой в существующий список по умолчанию? Например, TEMPLATE_CONTEXT_PROCESSORS = secret_default_location.TEMPLATE_CONTEXT_PROCESSORS + ('Store.views.items_in_cart',) - person Greg; 23.05.2011
comment
Вы должны иметь возможность использовать TEMPLATE_CONTEXT_PROCESSORS += ('Store.views.items_in_cart',) для добавления к значениям по умолчанию - person PiGGeH; 23.05.2011
comment
Настройки django по умолчанию можно импортировать, используя from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS над строкой для добавления. Затем вы можете добавить к этому, используя TEMPLATE_CONTEXT_PROCESSORS += ('Store.views.items_in_cart',) - person PiGGeH; 23.05.2011
comment
В Django 1.10 значение удалено из global_settings, и следует использовать новый параметр TEMPLATES. Как следует переносить код, подобный приведенному выше, который добавляет к настройке по умолчанию? Должны ли они просто включаться вручную? Есть ли еще дефолт? - person Alex Hall; 05.12.2016