1

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':True, u'length':27018,u'revpos':19,u'content_type': u'image/jpeg しか表示されません。 '}

したがって、明らかに実際の画像を渡していないか、とにかく正しく表示していません。奇妙なことに、実際にこれを行う方法の例をオンラインで見つけることができません。誰かが私に1つを指摘するか、ここで提供できますか?

4

2 に答える 2

2

テンプレートエンジンを使用してHTMLドキュメントをレンダリングしています。そのドキュメントは、他のHTMLドキュメントと同じようにWebブラウザによって解釈されます。

HTMLページに画像がどのように含まれているかを考えてみてください。画像がHTMLドキュメント自体の中でインラインになることはありません。HTMLページには、画像を個別に読み込んで所定の位置に表示するようにブラウザに指示するための参照が含まれています。

<img src="/path/to/image" />

したがって、同様に、次のことを行う必要があります。

于 2011-05-09T18:43:53.900 に答える
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 %}

これが役に立つことを願っています!

于 2016-05-10T06:48:20.027 に答える