2010-05-21 7 views
2

comme exposé here, on peut définir un MEDIA_URL dans settings.py (par exemple je pointe vers Amazon S3) et servir les fichiers dans la vue via {{ MEDIA_URL }}. Étant donné que MEDIA_URL est pas automatiquement dans le contexte, il faut ajouter un manuellement au contexte, donc, par exemple, les travaux suivants:Django: importer automatiquement MEDIA_URL dans le contexte

#views.py 

from django.shortcuts import render_to_response 
from django.template import RequestContext 

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

Cela signifie que dans chaque fichier view.py je dois ajouter from django.template import RequestContext et Dans chaque réponse, je dois spécifier explicitement context_instance=RequestContext(request).

Existe-t-il un moyen d'ajouter automatiquement (DRY) MEDIA_URL au contexte par défaut? Merci d'avance.

Répondre

3

Il y a une vue générique pour cet usage:

direct_to_template(request, template, extra_context=None, mimetype=None, **kwargs) 

Il est pas bien documenté (à mon avis: il ne dit pas qu'il utilise un RequestContext), donc je vous conseille de consulter le la mise en œuvre:

http://code.djangoproject.com/browser/django/trunk/django/views/generic/simple.py

Je pense qu'il est ce que vous cherchez ...

+0

J'utilise cette chose à la place de render_to_template – Kugel

+0

merci, c'est ce que je cherchais. cela devrait être plus évident dans la documentation! – pistacchio

0

Ajouter "django.core.context_processors.media" à votre TEMPLATE_CONTEXT_PROCESSORS dans le fichier de paramètres.

Questions connexes