質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

2187閲覧

djangoでボタンを押すとカウントが+1される機能を作りたい

yuudai

総合スコア65

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/05/30 06:34

前提・実現したいこと

djangoでボタンを押すとカウントが+1される機能を作りたいです。以前に似たような質問をするとpaginationをすると良いと言われました。しかしよくわからなかったので似たようなことをしてる人がいないか調べたらこの質問が近かったのでまねしてみたのですが数字が表示されません。
urls.pyが記載されてなかったのでそこがおかしいのかなと思ってます。
情報が足りない場合は質問の修正依頼お願いします

該当のソースコード

makedata.html

<h2>{{ count }}</h2> <form action="" method="POST"> <button type="submit" name="pitched" value="nextpitch">次の投球へ</button> {% csrf_token %} </form>

models.py

from django.db import models class User(models.Model): user = models.CharField(max_length=255) game_count = models.IntegerField(default=1)

views.py

from django.shortcuts import render from .models import User def user(request): user = User.objects.get(pk=1) if request.method == 'POST': if 'pitched' in request.POST: user.game_count += 1 user.save() game_count = User.objects.get(pk=1).game_count return render(request, 'protagonist/makedata.html', {'count': game_count})

urls.py

from django.urls import path from . import views #from django.contrib.auth import views as auth_views urlpatterns = [ path('relay/', views.relay, name='relay'), path('makedata/', views.makedata, name='makedata'), path('makedata/', views.user, name='makedata'), ]

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Python

1user = User.objects.get(pk=1) 2・・・ 3game_count = User.objects.get(pk=1).game_count 45game_count = user.game_count 6```userと定義しているのであれば、上記のように省略を。 7 8mulberryfields様の追加で、 9urlpatternsのnameには、それぞれ違う名前を振りわて、例えば 10```HTML 11<a href="{% url 'hoge' %}">にゃにゃにゃ</a> 12```とやればhogeという名前をつけたurlにいきます。今回は、 13```HTML 14<form action="{% url 'makedata' %}" method="POST"> 15 {% csrf_token %} 16 <button type="submit" name="pitched" value="nextpitch">次の投球へ</button> 17</form> 18```とかにする必要があります。

投稿2020/05/30 07:18

ForestSeo

総合スコア2720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuudai

2020/06/01 09:43

言われたとおりにやってみたのですが DoesNotExist at /ajax/ User matching query does not exist.と言うエラーが出ます。 models.pyのUserにデータが無いと言うことですか?
ForestSeo

2020/06/01 10:15

一致するユーザーがいないということです。 例えばUser.objects.get(pk=1)でエラーが出れば、pkが1のユーザーはいないことになります。
yuudai

2020/06/03 13:20

フォームから入力された情報でしかデータは作れないですか?
guest

0

自己解決

回答してくださった部分に加えてそもそもデータベースにpk=1を参照するためのデータが無いことが原因でした。
このサイトがデータベースにデータを追加する方法の参考になりました。
知らないことが多くて大変。

投稿2020/06/07 07:04

yuudai

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

form action=""が空欄になっているからではないでしょうか。
views.userを呼び出すURLを記載すれば良いと思います。
しかし、urlのnameが二つともmakedataになっているので、名前で引っ張ってくることができません。
nameを変える必要があると思います。

投稿2020/05/30 07:06

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問