タイトル: ajaxの使用例(POST編)
SEOタイトル: 【django】
この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。
<p>今回の例ではページの閲覧数をajaxでカウントアップする。</p>
<h2>テンプレートの実装</h2>
<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
<tbody>
<tr>
<td style="background-color:#000000">
<p><span style="color:#ffffff"><a id="{{ page.page_id }}" href="{{ page.link }}" target="_blank" onclick="</span><span style="color:#2ecc71">page_view_countup</span><span style="color:#ffffff">(this)"></span></p>
<p><span style="color:#ffffff"><script><br />
function </span><span style="color:#2ecc71">page_view_countup</span><span style="color:#ffffff">(a) {</span></p>
<p><span style="color:#ffffff"> </span><span style="color:#e74c3c">var token = '{{csrf_token}}';</span><br />
<span style="color:#ffffff"> var page_id = a.id;</span></p>
<p><span style="color:#ffffff"> </span><span style="color:#f1c40f">$.ajax({<br />
'url': '/ajax/page/countup',<br />
</span><span style="color:#e74c3c">headers: { "X-CSRFToken": token },</span><br />
<span style="color:#f1c40f"> 'type':'</span><span style="color:#e74c3c">POST</span><span style="color:#f1c40f">',<br />
'data':{<br />
'page_id': page_id,<br />
},<br />
'dataType':'json',<br />
'success':function(response){<br />
console.log(response)<br />
},<br />
});</span><br />
<span style="color:#ffffff">}<br />
</script></span></p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<h2>URLの定義</h2>
<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
<tbody>
<tr>
<td style="background-color:#000000">
<p><span style="color:#ffffff">urlpatterns = [<br />
</span><span style="color:#f1c40f">path('ajax/page/countup', PageCountupView.as_view()),</span><br />
<span style="color:#ffffff">]</span></p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<h2>ビューの定義</h2>
<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
<tbody>
<tr>
<td style="background-color:#000000">
<p><span style="color:#ffffff">from django.http import JsonResponse<br />
from django.views.generic import View<br />
from db_itn.models.page import page</span></p>
<p><span style="color:#ffffff">class pageCountupView(View):</span></p>
<p><span style="color:#ffffff"> def </span><span style="color:#e74c3c">post</span><span style="color:#ffffff">(self, request, *args, **kwargs):</span></p>
<p><span style="color:#ffffff"> page_id = request.</span><span style="color:#e74c3c">POST</span><span style="color:#ffffff">['page_id']</span></p>
<p><span style="color:#ffffff"> page = page.objects.get(page_id = page_id, delete_flag = 0)<br />
page.objects.filter(page_id = page_id, delete_flag = 0).update(views = page.views + 1)</span></p>
<p><span style="color:#ffffff"> context = {<br />
# 'page': page,<br />
}</span></p>
<p><span style="color:#ffffff"> return JsonResponse(context)</span></p>
</td>
</tr>
</tbody>
</table>