Django 动态创建的临时图像不显示
Django dynamically created temporary image not displaying
我想根据用户输入动态创建图像并将其显示给用户。
views.py:
class TreatmentTemplateView(TemplateView):
template_name = "../templates/patient/treatment_detail.html"
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context["patient_id"] = self.kwargs["patient_id"]
result = find_treatment(context["patient_id"])
context = result[0]
context["patient"] = result[1]
context['image'] = result[2]
print(context['image'])
return context
在find_treatment(context["patient_id”])
生成图片
通过 find_treatment
的子函数
fig = sns_plot.get_figure()
img_in_memory = BytesIO()
fig.savefig(img_in_memory, format="png") #dunno if your library can do that.
image = base64.b64encode(img_in_memory.getvalue())
模板包含:
<img src="data:image/png;base64,{{image}}" />
但是图片没有显示,这是我在模板中引用图片的方式的问题吗?
base64.b64encode
大概是returns一个字节串。要转换为字符串,您可以使用 django 设置文件中定义的 DEFAULT_CHARSET 或 'UTF-8'.
from django.conf import settings
image = image.decode(settings.DEFAULT_CHARSET)
我想根据用户输入动态创建图像并将其显示给用户。
views.py:
class TreatmentTemplateView(TemplateView):
template_name = "../templates/patient/treatment_detail.html"
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context["patient_id"] = self.kwargs["patient_id"]
result = find_treatment(context["patient_id"])
context = result[0]
context["patient"] = result[1]
context['image'] = result[2]
print(context['image'])
return context
在find_treatment(context["patient_id”])
生成图片
通过 find_treatment
fig = sns_plot.get_figure()
img_in_memory = BytesIO()
fig.savefig(img_in_memory, format="png") #dunno if your library can do that.
image = base64.b64encode(img_in_memory.getvalue())
模板包含:
<img src="data:image/png;base64,{{image}}" />
但是图片没有显示,这是我在模板中引用图片的方式的问题吗?
base64.b64encode
大概是returns一个字节串。要转换为字符串,您可以使用 django 设置文件中定义的 DEFAULT_CHARSET 或 'UTF-8'.
from django.conf import settings
image = image.decode(settings.DEFAULT_CHARSET)