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

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

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

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

integer

integerは、一般的に整数を表します。プラスやマイナス、ゼロもなりうる全ての数です。(例 : -2, -1, 0, 1, 2...)

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

ポストメソッドで取得してきた値をInt型に直す方法が知りたい

asasika_R
asasika_R

総合スコア25

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

integer

integerは、一般的に整数を表します。プラスやマイナス、ゼロもなりうる全ての数です。(例 : -2, -1, 0, 1, 2...)

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2回答

0評価

0クリップ

167閲覧

投稿2022/06/28 08:46

編集2022/06/28 19:27

Pythonで家計簿アプリを作っているのですが、ポストメソッドで取得した値(数字)がInt型に直すことができずに困っています。

具体的には(下にpythonと一部のhtmlのコードを載せています)

python

used_money = request.form.get('used_money') used_money = int(used_money) check_category.remaining_budget -=used_money

この部分なんですが、
used_moneyをInt()で囲むと
invalid literal for int() with base 10:
とエラーが出てきました。これはIntに直せないものを直そうとしているので出るエラーだと分かったのですが、値自体はターミナルにprintしてみたところ数字がでてきており、なぜ直らないのか分かりません。

そこでこの値をInt型に直す方法と、今のままでなぜIntに直らないのか、の二点教えていただきたいです。

python

from flask import Flask from flask import render_template,redirect,request from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate import datetime app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) migrate = Migrate(app,db) class Category(db.Model): category_name = db.Column(db.String,db.ForeignKey('detail.id'),primary_key=True) budget = db.Column(db.Integer,nullable=False) remaining_budget = db.Column(db.Integer,nullable=False) month = db.Column(db.Integer,nullable=False) class Detail(db.Model): id = db.Column(db.Integer,primary_key=True) category_name = db.relationship('Category',backref='detail',lazy=True) used_money = db.Column(db.Integer,nullable=False) purchased_item = db.Column(db.String,nullable=False) month = db.Column(db.Integer,nullable=False) day = db.Column(db.Integer,nullable=False) today = datetime.date.today() missing_entry = 0 duplicate_error = 0 @app.route('/',methods=['GET','POST']) def index(): if request.method == 'GET': display_categorys = Category.query.filter(Category.month == 6).all() display_details = Detail.query.filter(Detail.month == 6).all() check_count = Detail.query.filter(Detail.purchased_item.like('%eh%')).count() month = today.month if check_count == 0: return render_template('index.html',categorys=display_categorys,details=display_details,month=month,count=0) else: return render_template('index.html',categorys=display_categorys,details=display_details,month=month) else: month = request.get('month') try: search_categorys = Category.query.fileter_by(month = month).all() search_details = Detail.query.filter_by(month = month).all() return render_template('index.html',categorys=search_categorys,details=search_details,month=month) except: return render_template('index.html') @app.route('/create_category' ,methods=['GET','POST']) def create_category(): if request.method == 'GET': return render_template('create_category.html') else: category_name = request.form.get('category_name') budget = request.form.get('budget') category_month = today.month add_category = Category(category_name=category_name,budget=budget,remaining_budget=budget,month=category_month) db.session.add(add_category) try: db.session.commit() return redirect('/') except: if category_name == '' or budget == '': return render_template('create_category.html' ,missing_entry = 1) else: return render_template('create_category.html',duplicate_error = 1) @app.route('/<string:category_name>/create_detail/' ,methods=['GET','POST']) def create_detail(category_name): check_category = Category.query.filter_by(category_name=category_name).first() if request.method == 'GET': return render_template('create_detail.html',category=check_category) else: purchased_item = request.form.get('purchased_item') used_money = request.form.get('used_money') check_category.remaining_budget -=used_money detail_day = today.day detail_month = today.month try: add_detail = Detail(purchased_item=purchased_item,used_money=used_money,day=detail_day,month=detail_month) db.session.add(add_detail) db.session.commit() return redirect('/') except: return render_template('create_detail.html',missing_entry = 1)

html

{% extends 'base.html' %} {% block body %} <h1 class="title">{{month}}月の家計簿</h1> <h1 class="detail_second_title">帳簿</h1> <h2 class="detail_category_name">カテゴリ:{{category.category_name}}</h2> {% if error == 1 %} <h3>記入漏れ、または記入エラーがあります</h3> {% endif %} <article class="detail_form"> <form action="" method="POST"> <label for="purchased_item" class="detail_label_purchased_money"><h3>買ったもの</h3></label> <input type="text" name="purchased_item" class="detail_input_purchased_item"> <label for="used_money"><h3 class="detail_label_used_money">金額</h3></label> <input type="number" name="used_money" class="detail_input_used_money"> <input type="submit" value="確定" class="detail_input_submit"> </form> </article> {% endblock %}

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

can110

2022/06/28 09:17

printした結果をそのまま文字として提示ください。 そのさいできれば「print(f'[{used_money}]')」のように前後を[]なりで囲み余計な文字など確認しやすくするとよいです。
quickquip

2022/06/28 09:25

invalid literal for int() with base 10: の右に何も出ていませんか。 の左は ValueError: が出ていませんか。 https://teratail.com/help/question-tips#questionTips34 > 表示されたエラーメッセージをそのままコピー&ペーストしましょう。自分でタイプしなおしたり、自分で解釈・要約しようとしてはいけません。
asasika_R

2022/06/28 10:25

CAN110さん、コメントありがとうございます。 quickquipさん、アドバイスありがとうございます。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

integer

integerは、一般的に整数を表します。プラスやマイナス、ゼロもなりうる全ての数です。(例 : -2, -1, 0, 1, 2...)

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。