我正在使用带有Django的couchdb-python。我正在寻找一种方法来显示模板中的图像(存储在数据库中作为文档的附件)。奇怪的是,我在网上找不到任何关于如何做到这一点的例子。
目前,在views.py中,我有类似的内容:
def displaypage(request,id):
docs = SERVER['docs']
try:
doc = docs[id]
except ResourceNotFound:
raise Http404
...
attachments = doc['_attachments']['someimage.jpg']
...
text_marked_down = markdown.markdown(doc['text'])
return render_to_response('couch_docs/display.html',{'row':doc,'attachments':attachments,'doctext':text_marked_down,...},context_instance=RequestContext(request))
然后,在模板display.html中:
{% extends 'site_base.html' %}
{% block wrapper %}
{{ attachments }}
<div>{{ doctext|safe }}</div>
{{ endblock }}
我看到文字很好,但对于图像我只看到以下内容: {u'stub':是的,你的长度':27018,你是'','',''ntent_type':u'image / jpeg'}
所以,显然我没有传递实际图像,或者无法正确显示图像。奇怪的是,我无法在网上找到如何实际执行此操作的示例。任何人都可以指向我,或者在这里提供它吗?
答案 0 :(得分:2)
您正在使用模板引擎呈现HTML文档。该文档将由Web浏览器解释,就像任何其他HTML文档一样。
考虑HTML页面如何包含图像。图像永远不会嵌入HTML文档本身。 HTML页面包含一个引用,指示浏览器单独加载图像并将其显示到位。
<img src="/path/to/image" />
同样,你需要:
答案 1 :(得分:0)
一旦深入挖掘数据库,您可能需要考虑构建每个文档附件的URL,如下所示:
def function():
couch = couchdb.Server() #connect to server
db = couch['img'] #connect to database which contains docs with img attachments
doc_id = [] #create list of id's
http_docid = [] #create list to populate href for picture path
for i in db: #for each id in the db
doc_id.append(i) #add to the carid list
doc = db[i] #get the document id
for key in (doc['_attachments']): #for the key in the doc '_attacments' payload
print key #just to confirm
href_docid.append(('http://yourdbDomain/dbname/'+i+'/'+key)) #create a uri and append to a list
return href_docid
以下我使用Jinja2的模板:
{% for img in function() %}
<img class="some-class" src="{{ img }}">
{% endfor %}
希望这证明有用!