0

繰り返す必要がある HTML テンプレートがありますが、データ セットとは異なる変数を使用しています。

現在のコードを表示すると、よりよく説明されます。

def getBlueWidgets(request):
    widgets = Widget.objects.filter(colour='blue')
    html = generateHtml(widgets)
    return HttpResponse(json.dumps(html), mimetype="application/json")

def generateHtml(widgets):
    html = ''
    for widget in widgets:
        html += '<div class="widget">'
        html += '<div class="title">'
        html += widget.title
        html += '</div></div>'
    return html

getBlueWidgets()AJAX 経由で呼び出し、JS を使用してドキュメントに HTML を追加します。これは問題なく機能しますが、あまりきれいではなく、ウィジェットの HTML コードを維持するのが難しくなります。ウィジェット テンプレートを .html ファイルに追加し、何らかの方法で変数の場所を指定して、.html ファイルにインポートする方法はありgenerateHtml()ますか?

ありがとう!

4

1 に答える 1

1

もちろん。render_to_stringを使用できます:

from django.template.loader import render_to_string

def getBlueWidgets(request):
    widgets = Widget.objects.filter(colour='blue')
    html = render_to_string('widgets.html', {'widgets': widgets})
    return HttpResponse(json.dumps(html), mimetype="application/json")

# widgets.html
{% for widget in widgets %}
    <div class="widget">
        <div class="title">{{ widget.title }}</div>
    </div>
{% endfor %}
于 2013-10-16T04:03:43.263 に答える