我有一个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()
?
谢谢!
答案 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 %}