gpt4 book ai didi

python - 在 Django 中显示/渲染静态图像的简单 View

转载 作者:太空狗 更新时间:2023-10-29 22:02:26 25 4
gpt4 key购买 nike

我正在尝试使用 Django 的模板上下文加载器找到显示图像的最有效方式。我的应用程序中有一个静态目录,其中包含图像“victoryDance.gif”和项目级别的空静态根目录(使用 settings.py)。假设我的 urls.pysettings.py 文件中的路径是正确的。什么是最佳视野?

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)))

感谢您的回答这些 View 都有效!

最佳答案

如果您需要渲染图像,请阅读此处 http://www.djangobook.com/en/1.0/chapter11/并使用您的以下代码版本:

对于 django 版本 <= 1.5:

from django.http import HttpResponse

def my_image(request):
image_data = open("/path/to/my/image.png", "rb").read()
return HttpResponse(image_data, mimetype="image/png")

对于 django 1.5+,mimetype 被替换为 content_type(很高兴我不再使用 django 了):

from django.http import HttpResponse

def my_image(request):
image_data = open("/path/to/my/image.png", "rb").read()
return HttpResponse(image_data, content_type="image/png")

还有 a better way做事!

否则,如果您需要一个高效的模板引擎,请使用 Jinja2

否则,如果您使用的是 Django 的模板系统,据我所知,您不需要定义 STATIC_URL,因为它由“静态”上下文预处理器提供给您的模板:

TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.static',
'django.core.context_processors.media',
'django.core.context_processors.request',
'django.contrib.messages.context_processors.messages',
)

关于python - 在 Django 中显示/渲染静态图像的简单 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com