2013-03-16 8 views
22

Czy powinien znajdować się na liście Settings.py automatycznie, czy muszę go dodać? Mam absurdalnie ciężki czas serwowania pliku obrazu w trakcie opracowywania, a dokumenty są zbyt lakoniczne jak na mój gust i z jakiegoś powodu nie są dla mnie jasne. Chciałbym sprawdzić, jakie są moje template_context_processors, ale gdzie jest zlokalizowany? Nie ma go w moim pliku settings.py. Czy muszę to zazwyczaj edytować?Gdzie jest procesor kontekstowy szablonu w Django 1.5?

("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") 
+0

to, co zostałeś opublikowany, to lista procesora kontekstowego szablonu – catherine

Odpowiedz

45

W swojej settings.py można zdefiniować TEMPLATE_CONTEXT_PROCESSORS ustawienia.

Jednak Django ma zdefiniowane domyślne wartości dla tej okolicy, która jest

("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.core.context_processors.tz", 
"django.contrib.messages.context_processors.messages") 

Jeśli chcesz dodać procesora kontekstu własnego szablonu, który zachowując procesorów domyślne, można wykonać następujące w settings.py

import django.conf.global_settings as DEFAULT_SETTINGS 

TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
    'custom_context_processors.my_context_processor', 
) 

Refer TEMPLATE_CONTEXT_PROCESSORS dok.

+0

Dziękuję bardzo. Stworzyłem nowy projekt Django i nie widzę wstępnie wypełnionego TEMPLATE_CONTEXT_PROCESSORS w automatycznie utworzonym pliku settings.py. Aby wyświetlać pliki statyczne, czy muszę skopiować i wkleić powyższe dane, czy też wybieram niewłaściwą ścieżkę? – user798719

+0

@ user798719, Nie sądzę. To ustawienie jest domyślnie, nie musisz go edytować. Ponadto nie sądzę, że jest to wymagane do wyświetlania plików statycznych. – Rohan

+0

Dzięki. Jedno dodatkowe pytanie. Jeśli chcę dodać nowy niestandardowy procesor kontekstowy, czy mogę dołączyć w ten sposób do domyślnych procesorów kontekstowych, czy też muszę skopiować pełną konfigurację procesorów kontekstowych na moje settings.py? – Miquel

3

Możesz sprawdzić, jakich procesorów kontekstu używa twoja aplikacja, przeskakując do powłoki Django Pythona i importując twoje ustawienia.

$ manage.py shell 
> from django.conf import settings 
> settings.TEMPLATE_CONTEXT_PROCESSORS 

Jeśli ich nie zastąpisz, domyślne wartości powinny być renderowane.

W przypadku plików statycznych należy sprawdzić plik STATICFILES_DIRS, na którym serwer deweloperski Django będzie wyglądał tak, aby wyświetlał zasoby statyczne: https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-STATICFILES_DIRS.

Używam tego w moim settings.py:

from os.path import join, abspath 
PROJECT_ROOT = abspath(join(dirname(__file__), '..', '..')) 
STATICFILES_DIRS = [join(PROJECT_ROOT, 'public'), ] 

To nie będzie takie samo dla ciebie, ponieważ będzie ona zależeć od sposobu układ projektu.