我是一個Django新手,試圖構建一個允許用戶添加曲目到播放列表的應用程序。 我使用會話在視圖中生成軌道ID字符串列表,並返回帶有序列化數組的http響應。問題是,試圖迭代模板中的數組來構建有序列表時,格式不正確。它顯示爲一個python列表,而不是預期的帶符號的html列表。如何從json數組動態生成html列表通過ajax調用接收?
任何幫助將不勝感激!
股利
<!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。 –
如何迭代結果?我懷疑是這個問題,但我不知道如何找到適當的解決方案 – arshadic
Vivek向你展示了一種方法。另一種方法是更改視圖,以便呈現獨立的模板片段,類似於已經使用的HTML內部部分,並返回該片段而不是JSON;那麼你可以直接將它插入到HTML中。 –