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

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

詳細はこちら
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python 3.x

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

Q&A

解決済

1回答

8950閲覧

HTMLで取得した文字列をPythonで受け取る→比較→比較結果を表示したい。

Yukiya025

総合スコア86

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python 3.x

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

0グッド

1クリップ

投稿2019/09/08 12:20

編集2019/09/10 10:19

最終的にやりたいこと

  1. 入力したロシア語の綴りが合っているかどうかを判定する。
  2. 判定結果をウェブページに表示。

最終的な理想↓
Ideal

上記を実現するために考えていること

  1. HTMLのinput要素に入力した文字列をPythonに渡す。
  2. Pythonが渡された文字列をcsvファイル内のしかるべき単語と比較する。
  3. 比較結果が正しければ「正解」、そうでなければ「不正解」と表示する。

参考URL1: Pythonでフォームを受け取って色々やる
参考URL2: フォームからユーザの入力を受け取る

現在の問題

上記のURLを参考にhtmlとpythonのソースファイルを以下のように準備したのですが、評価結果をウェブページに反映する方法がわかりませんorz 比較する部分のコードはまだ書いていないのですが、現時点はとりあえず以下を実現したいです。

  1. 入力した単語をpythonに渡す。
  2. pythonがhtmlに渡された単語をそのまま返す。
  3. htmlページにその単語をそのまま表示。

現在の理想↓
理想2

htmlファイルとpythonファイルをつなぐ(?) にはどうすればよいでしょうかorzorz 現在以下2ファイルを書きました。が、肝心の橋渡しの方法がわかりません(>_<)

html

1<!--ロシア語の表は省略--> 2<form method="post" action="index.py"> 3 何か書いて<input name="input" type="text" size="30" maxlength ="30"> 4 <input name="Button1" type="submit" value="書き込み"> 5</form>

python

1import cgi 2 3form = cgi.FieldStorage() 4choose_pattern = form["input"].value 5 6print(choose_pattern)

2019/09/10追記
FiroProchainezoさんのアドバイスで書いた文字を返す方法がわかりました(≧∀≦)
Flask

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは

こういうときはFlaskがおすすめです。
formからデータを受け取り表示するだけのFlaskアプリの例を以下に提示します。
使ってみてください。

ファイル構成

text

1root 2├─app.py 3└─templates 4 index.html 5

app.py

python

1from flask import Flask, request, render_template 2 3app = Flask(__name__) 4 5 6@app.route('/', methods=['GET', 'POST']) 7def index(): 8 9 if request.method == 'GET': 10 return render_template('index.html') 11 else: 12 form_input = request.form['input'] 13 return render_template('index.html', 14 form_input=form_input) 15 16 17if __name__ == '__main__': 18 app.run(debug=True) 19

templates/index.html

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6</head> 7<body> 8 9 <h1>Flaskの例</h1> 10 <form method="post" action=""> 11 何か書いて<input name="input" id="input" type="text" size="30" maxlength="30"> 12 <input name="Button1" type="submit" value="書き込み"> 13 </form> 14 15 <p> 16 {{ form_input }} 17 </p> 18</body> 19</html>

pip freeze

text

1Click==7.0 2configparser==3.7.5 3Flask==1.1.1 4itsdangerous==1.1.0 5Jinja2==2.10.1 6MarkupSafe==1.1.1 7Werkzeug==0.15.5 8

使い方

以下を実行すると起動します。

sh

1python app.py

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)というのが出たら起動完了です。
ブラウザから、localhost:5000127.0.0.1:5000にアクセスすると、index.htmlが表示されます。

GETの場合は、app.pyifが処理され、POSTの場合は、app.pyelse側が処理されます。

実現したいことは、POST側で処理すれば実装できるはずです。

投稿2019/09/10 05:32

FiroProchainezo

総合スコア2421

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

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

Yukiya025

2019/09/10 10:24

FiroProchainezoさん、こんばんは! 回答ありがとうございます(≧∀≦) pip freezeでインストール済みパッケージ一覧を確認できるんですね! Flaskも初耳:D 実行したらできましたよーーー! 質問文末尾に証拠画像を載せました! あとはpythonで比較して「正解」「不正解」が出るようにいじってみます(*^^*)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問