어떻게 생성 된 이미지를 장고 템플릿에 임베드합니까? 나는이 원하지 않는django 템플릿 안에 생성 된 img 임베딩
뭔가
return render_to_response('graph.html', { 'img': get_graph() })
처럼 - 그냥 당신은 base64로 인코딩에게 이미지 데이터를 할 수있는 이미지
http.HttpResponse(get_graph(), mimetype="image/png")
어떻게 생성 된 이미지를 장고 템플릿에 임베드합니까? 나는이 원하지 않는django 템플릿 안에 생성 된 img 임베딩
뭔가
return render_to_response('graph.html', { 'img': get_graph() })
처럼 - 그냥 당신은 base64로 인코딩에게 이미지 데이터를 할 수있는 이미지
http.HttpResponse(get_graph(), mimetype="image/png")
을 보내고 data URI을 사용하기 때문에.
이미지 데이터가있는 HttpResponse를 반환하는보기 기능 중 하나에 URL을 매핑하고이 URL을 <img>
요소의 src로 사용할 수 있습니다.
urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^image/', 'views.get_image'),
)
views.py
from django.http import HttpResponse
def get_image(request):
image_data = get_graph() # assuming this returns PNG data
return HttpResponse(image_data, mimetype="image/png")
index.html을
<img src="image"/>
이 난을 포함하고 싶었다 django 서버에 두 번 이동하지 않고 django 페이지에서 matplotlib 이미지를 생성했습니다 (하나는 템플릿을 가져오고 하나는 이미지를 생성 함). 내가보기 방법에
<img alt="embedded" src="data:image/png;base64,{{inline_png}}"/>
그런 다음 이미지 내 템플릿에 다음을 넣어 :
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
import cStringIO as StringIO
import base64
num_signed_off = random.randint(0, 10)
num_reviewed = random.randint(0, 50)
num_unreviewed = random.randint(0, 50)
fig = Figure()
ax = fig.add_subplot(111, aspect='equal', axis_bgcolor='b')
ax.pie([num_signed_off, num_reviewed, num_unreviewed],
labels=['Signed Off', 'Reviewed', 'Unreviewed'],
colors=['b', 'r', 'g'],
)
ax.set_title('My Overall Stats')
ax.set_axis_bgcolor('r')
canvas=FigureCanvas(fig)
outstr = StringIO.StringIO()
canvas.print_png(outstr)
ret['inline_png'] = base64.b64encode(outstr.getvalue())
outstr.close()
return render(request, "my_view.html", ret)
이 유일한 문제는 IE7이나 IE8에서 작동하지 않습니다 - 그것은 작동 IE9 이상, 모든 표준 기반 웹 브라우저에 대한 생각, 그리고 물론.
이 문제에 대한 좋은 해결책을 찾았습니까? – super9