Python学習【365日チャレンジ!】167日目のマスターU(@Udemy11)です。
子ども用プログラミングアプリのViscuitを使ってみたら、面白くてハマってしまいました。
自分が子供の頃にこんなアプリがあれば、間違いなくプログラミングにハマってたなとおもいつつ、スマホ自体が存在してなかったので、今の子供達ってほんといいよな〜と実感しています。
それでは今日もPython学習を始めましょう。
昨日の復習
昨日は、Flackを使ってテンプレートを使ったWebページの作成について学習しました。
テンプレートを使うことで、プログラミングとページデザインを分けて分業することもできました。
対話型アプリのJarvisで学習したMVCモデル的な考え方と同じでしたね。
詳しくは、昨日の記事をごらんください。
今日は、Flaskを使ってGETなどのHTTPメソッドを取り扱ってみます。
server.py
まずは昨日書いたserver.py
を少し変更します。
from flask import Flask
from flask import render_template
from flask import request
app = Flask(__name__)
@app.route('/')
@app.route('/<username>')
def hello_name(username=None):
return render_template('hello.html', username=username)
@app.route('/post', methods=['GET', 'POST', 'PUT', 'DELETE'])
def show_post():
return str(request.values)
def main():
app.debug = True
app.run()
if __name__ == '__main__':
main()
昨日のコードから追加したのがハイライトしている3行目と14〜16行目です
request
をインポートして、14行目でアドレスに/post
とmethod
にHTTPメソッドをすべて入れています。
例えばこのHTTPメソッドをPOST
だけにすると、他のメソッドでは要求された値を返すことはできません。
関数show post()
の返り値は、request
の値を文字列にしたものになります。
test_flask.py
名前は何でもいいのですが、新しくHTTPメソッドで値を要求するPythonファイル(test_flask)を作成します。
import requests
r = requests.post(
'http://127.0.0.1:5000/post', data={'username': 'mark'}
)
print(r.text)
インポートするのは、簡単にHTTPメソッドを扱えるrequests
です。
4・5行目でPOSTリクエストをusername
にmark
という値をサーバーに送信して、返ってきた値r
をテキストで出力しています。
次に、server.py
を実行してサーバーを立ち上げた状態で、ターミナルからtest_flask
を実行します。
ターミナルで実行するのは、Pycharmで指定しているインタプリタがserver.py
を指定してるので、同じPycharm上でtest_flask.py
を実行することができないからです。
実行結果は次のようになります。
CombinedMultiDict([ImmutableMultiDict([]), ImmutableMultiDict([('username', 'mark')])])
FlaskでPOSTリクエストされたデータはImmutableMultiDict
というオブジェクトに入るので、その中にusername
とmark
が入ったデータが出力されています。
usernameを抽出
server.py
のコードを少し変更して、mark
だけが返されるようにするには、最初のコードを一部分だけ変更します。
return str(request.values[username])
16行目に[username]
を付け加えるだけです。
これでtest_flask.py
をターミナルから実行すると、mark
だけが返ってきます。
server.py
では、4つのHTTPメソッドが指定されているので、test_flask.py
の4行目をrequests.post
ではなく、.get
や.put
、.delete
に変えても同じ結果が返されます。
じっくり理解
酒井さんの講座を受講してPythonを学習していますが、必ずわからないことが出てくるので、ネットで調べる癖がついてきました。
基本的に学習は人から与えられるものではなく、自分で手に入れるものなので、自分で調べることは重要です。
なので、講座は1つのきっかけで、きっかけをもとに理解を深めるのは、自分自身です。
しっかりと理解を深めるためにじっくりと学習しましょう
それでは明日もGood Python!