在Django视图中将变量插入HTML模板,然后通过AJAX返回

时间:2013-10-16 04:00:00

标签: html ajax django templates

我有一个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

我通过AJAX调用getBlueWidgets(),然后使用JS将HTML添加到文档中。这工作正常,但不是很整洁,这使得维护我的小部件HTML代码变得困难。有没有办法可以将我的窗口小部件模板添加到.html文件中,以某种方式指定变量的位置,并将其导入generateHtml()

谢谢!

1 个答案:

答案 0 :(得分: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 %}