私はDjangoを初めて使用し、クリックすると「X」がマークされる10x10ボードを持つゲームを作成しています。モデルの 1 つで、各ボード セルの値を格納する属性があり、デフォルトで空白に設定されています。ボードをjqueryでマークできます。ただし、クリックしたセルがマークされていることをサーバー側に知らせるために、データをサーバー側に送信したいと考えています。そうすれば、ゲームを終了して後で再度アクセスすると、ボードにはマークされたセルに「X」が表示されます。
これは、HTML ページに埋め込まれた jquery コードです。
<script>
$(document).ready(function(){
$('.target_cell').click(function(){
if ($(this).text() != "X" && $(this).text() != "H"){
$(this).text("X");
var spot = $(this).attr('name'); //Cell index number like in an array
$.post("/play_game/{{game.id}}/", spot);
}
else{
alert("Spot already taken!");
}
});
});
</script>
jquery .post メソッドによってアクセスされているビューのコードは次のとおりです。
def play_game(request, game_id):
game = fetch_game(request.user, game_id)
if request.method == 'POST':
spot = request.POST['spot']
game.creator_target_board[int(spot)] = "X"
variables = RequestContext(request, {
'game': game,
'set_board': game.creator_ship_board,
'target_board': game.creator_target_board
})
return render_to_response('battleship/play_game.html', variables)
私は現在、テストのためだけに自分のビューで csrf_exempt を使用しています。ボードのセルをクリックすると、「X」とマークされますが、サーバー ログには 500 エラーが表示されます。これを修正する方法についてのアイデアはありますか? 前もって感謝します!