【发布时间】:2017-07-30 18:33:24
【问题描述】:
我是一名 Django 新手,正在尝试构建一个允许用户将曲目添加到播放列表的应用程序。 我使用会话在视图中生成轨道 ID 字符串列表,并返回带有序列化数组的 http 响应。问题是尝试遍历模板中的数组以构建有序列表的格式不正确。它显示为 python 列表,而不是预期的项目符号 html 列表。
任何帮助将不胜感激!
分区
<!DOCTYPE html>
<div id="playlist">
<ol>
{% for track in playlist %}
<li>{{track}}</li>
{% endfor %}
</ol>
</div>
</html>
JavaScript
<script type="text/javascript">
$(document).on('submit', '.track_form', function() {
var $form = $(this);
$.ajax({
url: $form.attr('action'),
data: $form.serialize(),
type: $form.attr('method'),
success: function (data) {
$("#playlist").html(data);
},
error: function(data) {
console.log('There was a problem');
}
});
return false;
});
</script>
视图
def artistpage(request):
if request.method == 'POST':
session_playlist = request.session.get('session_playlist', [])
tname = str(request.POST.get('track_name'))
session_playlist.append(tname)
request.session['session_playlist'] = session_playlist
return HttpResponse(json.dumps(session_playlist))
【问题讨论】:
-
但是您没有迭代从 Ajax 调用返回的结果。您只需将其直接转储到#playlist div 中即可。
-
如何迭代结果?我怀疑这是问题所在,但我不确定如何找到正确的解决方案
-
Vivek 向您展示了一种方法。另一种方法是更改您的视图,使其呈现一个独立的模板片段,类似于您已经拥有的 HTML 的内部部分,并返回它而不是 JSON;然后你可以直接将它插入到 HTML 中。
-
有趣。所以我会有两个 html 文件并将一个插入另一个?