template safe plantillas linebreaksbr length ifequal comment python django django-templates

python - safe - Django, procesadores de contexto de plantilla



linebreaksbr django (3)

Aquí lo que funcionó para mí para 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", "myapp.processor.foos", )

Tengo un problema extraño, quiero agregar una consulta global utilizando procesadores de contexto. Así es como lo hice following :

hice un processor.py en mi aplicación como tal:

from myproject.myapp.models import Foo def foos(request): return {''foos'': Foo.objects.all()}

y al final de mi configuración.py he agregado esto:

TEMPLATE_CONTEXT_PROCESSORS = (''myapp.processor.foos'',)

Por último, paso mi opinión así:

def index_view(request): return render_to_response(''index.html'', {}, context_instance=RequestContext(request))

y en mi plantilla index.html:

<select id="select_foo"> {% for foo in foos %} <option value="/{{ foo.slug }}">{{ foo.name }}</option> {% endfor %} </select>

Y finalmente mi url:

(r''^$'', ''myapp.views.index_view''),

Mi foos se muestra sin ningún problema, sin embargo mi media_url y otros contextos se han ido. Cuál puede ser el problema


Cuando especifica esto:

TEMPLATE_CONTEXT_PROCESSORS = (''myapp.processor.foos'',)

En su archivo de configuración, está anulando los procesadores de contexto predeterminados de Django. Para extender la lista, debe incluir las predeterminadas en su configuración:

TEMPLATE_CONTEXT_PROCESSORS = ( "django.core.context_processors.auth", "django.core.context_processors.debug", "django.core.context_processors.i18n", "django.core.context_processors.media", "myapp.processor.foos", )

Tenga en cuenta que las configuraciones anteriores son las predeterminadas (más su procesador) para django 1.1.


Necesita agregar los valores predeterminados de TEMPLATE_CONTEXT_PROCESSORS. Sin embargo, en lugar de codificar esos valores, que se vincularán a una versión específica de Django, puede agregar su procesador de contexto a los valores predeterminados de la siguiente manera:

from django.conf import global_settings TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + ( "myapp.processor.foos", )

Asegúrese de incluir la coma final en la tupla, para que Python lo reconozca como una tupla.