前提・実現したいこと
djangoでajaxを使ってボタンを押す毎にプラス1していく機能を作りたいです。
しかしajaxについて調べてもピンとこなかったので質問します。
エラー的にデータベースが何かだめなのかと思うのですが、いろんなとこで根本的に間違っている気がします。
あとajaxを使うとき存在しないpathを使えるのかな?と疑問
発生している問題・エラーメッセージ
AttributeError at /makedata/ajax/ 'bool' object has no attribute 'get'
該当のソースコード
makedata.html
<div id="ajax"> <span id="id_div_ajax_response"> AJAX RESPONSE </span> </div> <form id="ajax-add-post" action="{% url 'makedata:ajax' %}" method="POST"> <button type="submit">次の投球へ</button> {% csrf_token %} </form> <script> function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie !== '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(c ookies[i]); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) === (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } var csrftoken = getCookie('csrftoken'); function csrfSafeMethod(method) { // these HTTP methods do not require CSRF protection return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } $.ajaxSetup({ beforeSend: function (xhr, settings) { if (!csrfSafeMethod(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrftoken); } } }); // 送信ボタンで呼ばれる $("form").submit( function(event) { event.preventDefault(); var form = $(this); $.ajax({ url: form.prop("action"), method: form.prop("method"), data: form.serialize(), timeout: 10000, dataType: "text", }) .done( function(data) { $("#id_div_ajax_response").text(data);ここで+1していけるのかなと思ってる }) }); </script>
models.py
class User(models.Model): user = models.CharField(max_length=255) game_count = models.IntegerField(default=1)
views.py
def user(request): try: user = User.objects.get(pk=1) except User.DoesNotExist: return False user.game_count += 1 user.save() game_count = User.objects.get(pk=1).game_count hoge = "Ajax Response: " + game_count return HttpResponse(hoge)
urls.py
from django.urls import path from . import views #from django.contrib.auth import views as auth_views app_name = "makedata" urlpatterns = [ path('relay/', views.relay, name='relay'), path('makedata/', views.makedata, name='makedata'), path('makedata/ajax/', views.user, name="ajax"), ]
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/01 03:31