🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Bottle

Bottleは、PythonのWebサーバです。1つのPythonファイルで構成されており、非常に軽量。Web APIの作成や導入が簡単で、DjangoやFlaskに比べ使いやすくシンプルなことが特徴です。

Python 3.x

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

HTML

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

Q&A

解決済

1回答

1107閲覧

ホームページで値の入力をスキップさせる場合【python3】

tonk

総合スコア22

Bottle

Bottleは、PythonのWebサーバです。1つのPythonファイルで構成されており、非常に軽量。Web APIの作成や導入が簡単で、DjangoやFlaskに比べ使いやすくシンプルなことが特徴です。

Python 3.x

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

HTML

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

0グッド

0クリップ

投稿2019/10/06 01:40

やりたいこと、困ってること

ホームページに入力項目を複数設け、その値をpythonで処理したいと考えています。
場合によっては項目の一部を未入力としておきたいのですが、その場合エラーとなるので困っています。

こちらのソースコードであれば、number1からnumber3まですべて入力しないと
totalが得られないということになります(でも場合によっては一つ二つ未入力のままとしたい)。

python側

from bottle import route, run, template, request @route("/test") def test(): return template("test",total="") @route("/test",method="POST") def test(): num1 = request.forms.number1 num2 = request.forms.number2 num3 = request.forms.number3 total = int(num1)+int(num2)+int(num3) return template("test",total=total) run(host="localhost",port=8080,debug=True)

テンプレート側

<html> <body> <div> <form method="post" action="/test"> <p>test</p> <p>number1</p> <input type="text" name="number1"> <p>number2</p> <input type="text" name="number2"> <p>number3</p> <input type="text" name="number3"> <input type="submit" value="送信"> </form> <br> <p>こたえ</p>{{total}} </div> </body> </html>

良い書き方があればご教示いただいたいと思います。
何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

送られてきたデータが空文字かNoneだったら、numxに0を代入すればよいと思います。

ちょっと冗長になりますが、以下の記述を3回繰り返せば行けそうです。

python

1if request.forms.numberx is None or request.forms.numberx == '': 2 numx = 0 3else: 4 numx = request.forms.numberx

追記 20191006 14:45

多少短くするならこんな感じでしょうか...

python

1numx = request.forms.numberx if request.forms.numberx.isnumeric() else 0

参考:

  • 三項演算子

三項演算子(Python)

  • isnumeric()

inputで得た入力内容をstrとintに分岐させたい

投稿2019/10/06 01:57

編集2019/10/06 05:49
siruku6

総合スコア1382

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

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

tonk

2019/10/06 05:36

早速のご回答ありがとうございます。 でも結構項目数があるため、できればもう少し簡潔にしたいんですよね・・・
tonk

2019/10/06 11:27

一行で済むので分かりやすくなりました。 どうもありがとうございました。
siruku6

2019/10/06 11:49

1行で書くとlintツールに怒られてしまうので、もしチーム開発になったら、1行での処理は好まれないかもしれない、、、 ということを覚えておくと良いかもしれません! 1人で開発する分には問題ないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問