私は、ユーザーがプレイリストにトラックを追加できるようにするアプリを作成しようとしているDjango初心者です。 セッションを使用して、ビュー内のトラックID文字列のリストを生成し、シリアル化された配列でhttp応答を返します。問題は、順序付きリストを構築するためにテンプレート内の配列を繰り返し処理しようとすると、正しくフォーマットされないということです。これは、予想される箇条書きのHTMLリストの代わりに、Pythonのリストとして表示されます。json配列から動的に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>
あなたが要求を行うためにAJAX呼び出しを使用しているので、あなたはJavaScriptでHTMLリストを作成する必要があり
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に挿入することができます。 –