Un Simple Affichage/de Rendu d'une image Statique dans Django
Je suis en train d'essayer de trouver le moyen le plus efficace de l'affichage d'une image à l'aide de django reinhardt, modèle de contexte chargeur. J'ai un statique dir dans mon application qui contient l'image "victoryDance.gif" et un vide statique de la racine au niveau du projet (avec settings.py
). en supposant que les chemins à l'intérieur de mon urls.py
et settings.py
fichiers sont corrects. quel est le meilleur point de vue?
from django.shortcuts import HttpResponse
from django.conf import settings
from django.template import RequestContext, Template, Context
def image1(request): # good because only the required context is rendered
html = Template('<img src="{{ STATIC_URL }}victoryDance.gif" alt="Hi!" />')
ctx = { 'STATIC_URL':settings.STATIC_URL}
return HttpResponse(html.render(Context(ctx)))
def image2(request): # good because you don't have to explicitly define STATIC_URL
html = Template('<img src="{{ STATIC_URL }}victoryDance.gif" alt="Hi!" />')
return HttpResponse(html.render(RequestContext(request)))
def image3(request): # This allows you to load STATIC_URL selectively from the template end
html = Template('{% load static %}<img src="{% static "victoryDance.gif" %}" />')
return HttpResponse(html.render(Context(request)))
def image4(request): # same pros as image3
html = Template('{% load static %} <img src="{% get_static_prefix %}victoryDance.gif" %}" />')
return HttpResponse(html.render(Context(request)))
def image5(request):
html = Template('{% load static %} {% get_static_prefix as STATIC_PREFIX %} <img src="{{ STATIC_PREFIX }}victoryDance.gif" alt="Hi!" />')
return HttpResponse(html.render(Context(request)))
merci pour les réponses à Ces points de vue tout le travail!
OriginalL'auteur JoshuaBox | 2012-07-20
Vous devez vous connecter pour publier un commentaire.
Si vous avez besoin de rendre une image lire un peu ici http://www.djangobook.com/en/1.0/chapter11/ et l'utilisation de votre version d'utiliser le code suivant:
Pour django version <= 1.5:
Pour django 1.5+
mimetype
a été remplacé parcontent_type
(tellement heureux que je ne travaille pas avec django plus):Il y a également une meilleure façon de faire les choses!
D'autre, si vous avez besoin d'un efficace moteur de template utiliser Jinja2
D'autre, si vous utilisez Django système de template, à partir de ma connaissance vous n'avez pas besoin de définir STATIC_URL tel qu'il est servi dans vos modèles en "statique" contexte de préprocesseur:
mimetype
aveccontent_type
de django 1.5OriginalL'auteur StefanNch
Dans votre dernier exemple (image5), vous devez utiliser
{{ STATIC_PREFIX }}
au lieu de{% STATIC_PREFIX %}
STATIC_PREFIX
est variable, pas une baliseOriginalL'auteur Igor
Pour éviter de définir
STATIC_URL
explicitement, vous pouvez utiliser unRequestContext
lors du rendu de votre modèle. Assurez-vous justedjango.core.context_processors.static
est dans votreTEMPLATE_CONTEXT_PROCESSORS
réglage.Sinon, vous pouvez utiliser le modèle statique de la balise.
Une troisième option est la
get_static_prefix
balise de modèle.OriginalL'auteur Alasdair