Python Flask チュートリアル学習 01

チュートリアルは w3cschool から来ています。

Flask は軽量でカスタマイズ可能なフレームワークであり、Python 言語で記述されており、他の同様のフレームワークよりも柔軟で軽量、安全で使いやすいです。MVCモデルとの組み合わせでうまく開発でき、開発者が連携し、少人数のチームで中小規模のWebサイトや豊富な機能を備えたWebサービスを短期間で実現できます。さらに、Flask は高度なカスタマイズ性も備えており、ユーザーは自分のニーズに応じて対応する機能を追加できます.コア機能をシンプルに保ちながら、機能を充実および拡張できます.強力なプラグイン ライブラリにより、ユーザーはパーソナライズされた Web サイトを実現できます.カスタマイズと開発強力なウェブサイト。

フラスコのチュートリアル

フラスコアプリケーション

from flask import Flask
app=Flask(__name__)

@app.route('/')
'''
app.route(rule,options)
rule 参数表示与该函数的URL绑定。
options 是要转发给基础Rule对象的参数列表。
在上面的示例中,'/ ' URL与hello_world()函数绑定。
因此,当在浏览器中打开web服务器的主页时,将呈现该函数的输出。
最后,Flask类的run()方法在本地开发服务器上运行应用程序。
'''
def hello_world():
    return 'Hello World'
if __name__ == '__main__':
    app.run()
    #app.run(host, port, debug, options)

cmd コマンドラインは python xxx.py を実行し、
表示http://127.0.0.1:5000/されますHello World

フラスコルーティング

@app.route('/hello')
def hello_world():
    return 'hello world'

開くhttp://127.0.0.1:5000/helloと表示されますhello world

フラスコ変数の規則

URL は、変数セクションをルール パラメーターに追加することで動的に構築できます。
この変数セクションは次のようにマークされています

from flask import Flask
app=Flask(__name__)
@app.route('/hello/<name>')
def hello_name(name):
    return 'Hello %s!' % name
if __name__ == '__main__':
    app.run(debug=True)

http://localhost:5000/hello/Flaskディスプレイを開くHello Flask!

from flask import Flask
app=Flask(__name__)
@app.route('/blog/<int:postID>')
def show_blog(postID):
    return 'Blog Number %d' % postID
@app.route('/rev/<float:revNo>')
def revision(revNo):
    return 'Revision Number %f' % revNo
if __name__ == '__main__':
    app.run()

http://localhost:5000/blog/55ディスプレイを開くディスプレイBlog Number 55
を開くhttp://localhost:5000/rev/1.5Revision Number 1.500000

from flask import Flask
app=Flask(__name__)
@app.route('/flask')
def hello_flask():
    return 'Hello Flask'
@app.route('/python/')
def hello_python():
    return 'Hello Python'
if __name__ == '__main__':
    app.run()

http://localhost:5000/flaskディスプレイを開くディスプレイHello Flask
開くまたは両方のディスプレイを開くhttp://localhost:5000/flask/404 Not Found
http://localhost:5000/pythonhttp://localhost:5000/python/Hello Python

フラスコの URL の構築

url_for() 関数は、関数固有の URL を動的に構築するのに役立ちます。
url_for() 関数は、関数の名前を最初の引数として受け入れ、それぞれが URL の変数部分に対応する 1 つ以上のキーワード引数を受け入れます。

from flask import Flask,redirect,url_for
app=Flask(__name__)
@app.route('/admin')
def hello_admin():
    return 'Hello Admin'
@app.route('/guest/<guest>')
def hello_guest(guest):
    return 'Hello %s as Guest' % guest
@app.route('/user/<name>')
def hello_user(name):
    if name == 'admin':
        return redirect(url_for('hello_admin'))
    else:
        return redirect(url_for('hello_guest',guest=name))
if __name__ == '__main__':
    app.run(debug=True)

http://localhost:5000/adminディスプレイを開くディスプレイHello Admin
を開くhttp://localhost:5000/guest/xwkHello xwk as Guest

Flask HTTP メソッド

login.html

<html>
   <body>
      <form action = "http://localhost:5000/login" method = "post">
         <p>Enter Name:</p>
         <p><input type = "text" name = "nm" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>
   </body>
</html>
from flask import Flask,redirect,url_for,request,render_template
app=Flask(__name__)

@app.route('/')
def index():
    return render_template("login.html")

@app.route('/success/<name>')
def success(name):
    return 'welcome %s' % name

@app.route('/login',methods=['POST','GET'])
def login():
    if request.method == 'POST':
        print(1)
        user=request.form['nm']
        return redirect(url_for('success',name=user))
    else:
        print(2)
        user=request.args.get('nm')
        return redirect(url_for('success',name=user))
if __name__ == '__main__':
    app.run()

login.htmlを開いて
ここに画像の説明を挿入
名前を送信後、ジャンプしhttp://localhost:5000/success/xwkて表示welcome xwk

login.html でメソッド パラメータを「get」に変更すると、
出力は同じになります。

フラスコ テンプレート

テンプレートの基本的な使い方
プロジェクトの下にすべてのテンプレートファイルを格納するtemplatesフォルダを、そのディレクトリの下にテンプレートファイルのhtmlファイルを作成しますhello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
我的模板html内容
<br />{
   
   { my_str }}
<br />{
   
   { my_int }}
<br />{
   
   { my_array }}
<br />{
   
   { my_dict }}
</body>
</html>
from flask import Flask,render_template
app=Flask(__name__)

#创建视图函数,将该模板内容进行渲染返回
@app.route('/')
def index():
    # 往模板中传入的数据
    my_str = 'Hello Word'
    my_int = 10
    my_array = [3, 4, 2, 1, 7, 9]
    my_dict = {
    
    
        'name': 'xiaoming',
        'age': 18
    }
    return render_template('hello.html',
                          my_str=my_str,
                           my_int=my_int,
                           my_array=my_array,
                           my_dict=my_dict
                           )
#模板变量
#代码中传入字符串,列表,字典到模板中


if __name__ == '__main__':
    app.run()

http://127.0.0.1:5000/としてコンテンツを開きます

我的模板html内容
Hello Word
10
[3, 4, 2, 1, 7, 9]
{
    
    'name': 'xiaoming', 'age': 18}

Flask 静的ファイル

通常、Web アプリケーションには、Web ページの表示をサポートする JavaScript ファイルや CSS ファイルなどの静的ファイルが必要です。

demo01.py

from flask import Flask,render_template
app=Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)

テンプレートフォルダの下index.html

<html>
   <head>
   <script type = "text/javascript" src = "{
     
     { url_for('static', filename = 'hello.js') }}" ></script>
   </head>
   <body>
      <input type = "button" onclick = "sayHello()" value = "Say Hello" />
   </body>
</html>

静的フォルダーにhello.js

function sayHello(){
    
    
	alert("Hello World")
}

http://127.0.0.1:5000/
ここに画像の説明を挿入

Flask Request オブジェクト

Request オブジェクトの重要なプロパティを以下に示します。

  • フォーム - フォーム パラメータとその値のキーと値のペアを含むディクショナリ オブジェクトです。
  • args - 疑問符 (?) の後の URL の一部である、解析されたクエリ文字列の内容
  • Cookies - Cookie の名前と値を保持する辞書オブジェクト。
  • fules - アップロードされたファイルに関連するデータ
  • method - 現在のリクエストメソッド

Flask はフォーム データをテンプレートに送信します

from flask import Flask,render_template,request
app=Flask(__name__)

@app.route('/')
def student():
    return render_template('student.html')
@app.route('/result',methods=['POST','GET'])
def result():
	if request.method=='POST':
		result=request.form
		return render_template('result.html',result=result)
if __name__ == '__main__':
    app.run(debug=True)

Student.html

<form action="http://localhost:5000/result" method="POST">
     <p>Name <input type = "text" name = "Name" /></p>
     <p>Physics <input type = "text" name = "Physics" /></p>
     <p>Chemistry <input type = "text" name = "chemistry" /></p>
     <p>Maths <input type ="text" name = "Mathematics" /></p>
     <p><input type = "submit" value = "submit" /></p>
</form>

結果.html

<!doctype html>
  <table border = 1>
     {% for key, value in result.items() %}
    <tr>
       <th> {
   
   { key }} </th>
       <td> {
   
   { value }}</td>
    </tr>
 {% endfor %}
</table>

ここに画像の説明を挿入
ここに画像の説明を挿入

フラスコクッキー

from flask import Flask,make_response,request
app=Flask(__name__)

@app.route('/set_cookies')
def set_cookies():
    resp=make_response("success")#设置响应体
    resp.set_cookie("xwk","xwk",max_age=3600)#max_age设置有效期,单位为秒
    return resp
@app.route('/get_cookies')
def get_cookies():
    #获取cookie,通过request.cookies的方式,返回的是一个字典,可以获取字典里的相应的值
    cookie_1=request.cookies.get("xwk")#获取名字为Itcast_1对应cookie的值
    return cookie_1
@app.route('/delete_cookies')
def delete_cookie():
    resp=make_response("del success")
    #这里的删除只是让cookie过期,并不是直接删除cookie
    resp.delete_cookie("xwk")
    return resp
if __name__ == '__main__':
    app.run(debug=True)

http://localhost:5000/set_cookies
以下のようにF12のページが表示されない場合は、ページを更新して
ここに画像の説明を挿入
http://localhost:5000/get_cookies
設定した内容を表示してください

http://localhost:5000/delete_cookies
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_46322367/article/details/127502253