Python | Flaskを使ったWeb開発の紹介

フラスコとは何ですか? FlaskはWebアプリケーションを構築することを可能にするPythonのAPIです。それはArmin Ronacherによって開発されました。 FlaskのフレームワークはDjangoのフレームワークよりも明確で、単純なWebアプリケーションを実装するための基本コードが少ないため、習得が容易です。 WebアプリケーションフレームワークまたはWebフレームワークは、プロトコル、スレッド管理などの低レベルのコードを記述せずに開発者がアプリケーションを記述するのに役立つモジュールとライブラリの集まりです。FlaskはWSGI(Web Server Gateway Interface)ツールキットに基づいています。そしてJinja2テンプレートエンジン。 Flaskを始めよう: FlaskのインストールにはPython 2.6以上が必要です。 FlaskをフラスコパッケージからPythonのIDEにインポートすることから始めることができます。どの環境にもインストールするには、下記のインストールリンクをクリックしてください。 インストールが機能しているかどうかをテストするには、以下のコードをチェックしてください。

‘/’ URLはhello()関数でバインドされています。 Webサーバのホームページがブラウザで開かれると、この関数の出力はそれに応じてレンダリングされます。 Flaskアプリケーションはrun()関数を呼び出すことによって起動されます。コードを変更した場合は、メソッドを手動で再起動する必要があります。これを克服するために、エラーを追跡するためにデバッグサポートが有効になります。

ルーティング: 今日では、Webフレームワークはルーティング技術を提供しているので、ユーザーはURLを覚えています。ホームページから移動せずに直接Webページにアクセスすると便利です。 URLを関数にバインドするために、次のroute()デコレータを使います。

ユーザーがhttp:// localhost:5000 / helloのURLにアクセスすると、hello_world()関数の出力がブラウザに表示されます。アプリケーションオブジェクトのadd_url_rule()関数を使用して、上記の例のように関数にURLをバインドすることもできます。

Flaskで変数を使う: フラスコ内の変数は、変数部分をルールパラメータに追加することによってURLを動的に構築するために使用されます。この可変部分は、とマークされています。キーワード引数として渡されます。以下の例をご覧ください

上記の例をhello.pyとして保存し、パワーシェルから実行します。次に、ブラウザを開いてURL http:// localhost:5000 / hello / codesforcodesを入力します。

上記の例では、route()デコレータのパラメータは引数としてURL '/ hello'に添付された可変部分を含みます。したがって、http:// localhost:5000 / hello / codesforcodesのようなURLを入力すると、codesforcodesが引数としてhello()関数に渡されます。 デフォルトの文字列変数部分に加えて、int、float、path(スラッシュを使用できるディレクトリ区切りチャネル用)などの他のデータ型も使用されます。 FlaskのURLルールはWerkzeugのルーティングモジュールに基づいています。これは、形成されたURLが一意であり、Apacheによって定められた先例に基づいていることを保証します。 例:

FLaskでURLを構築する: 特定の関数のURLの動的構築は、url_for()関数を使用して行われます。関数は、関数の名前を最初の引数として受け取り、1つ以上のキーワード引数を受け取ります。この例を参照

これをテストするには、上記のコードを保存してpythonシェルを介して実行してからブラウザを開き、以下のURLを入力してください - 上記のコードはuser(name)という名前の関数を持ち、入力URLを通して値を受け取ります。基本的に、受け取った引数がadmin引数と一致するかどうかを確認します。それが一致すれば、関数hello_admin()が呼び出され、そうでなければhello_guest()が呼び出されます。 Flaskは指定されたURLからデータを取得するためのさまざまなHTTPプロトコルをサポートしています。これらは次のように定義することができます -

静的ファイルの処理 Webアプリケーションでは、Webページをブラウザで表示するために、JavaScriptやCSSファイルなどの静的ファイルが必要になることがよくあります。通常、Webサーバーはそれらを設定するように構成されていますが、開発中は、これらのファイルはパッケージ内またはモジュールの横にある静的フォルダーとして機能します。下記のJavaScriptの例を参照してください。

次のHTMLコード

hello.jsのJavaScriptファイルは次のとおりです。

上記のhello.jsファイルはHTMLファイルに従ってレンダリングされます。

クライアントのWebページからのデータのオブジェクト要求は、グローバル要求オブジェクトとしてサーバーに送信されます。 Flaskモジュールをインポートして処理されます。これらは、Form(Key-Value Pairを含む)、Args(疑問符(?)の後に解析されたURL)、Cookie(Cookieの名前と値を含む)、Files(アップロードされたファイルに関するデータ)、Method(現在の要求)などの属性で構成されます。

クッキー: Cookieは、クライアントのコンピュータに保存されるテキストファイルの形式です。その目的は、ユーザーの経験とWebページの統計に従ってWebサイトを改善するために、クライアントの使用に関するデータを記憶および追跡することです。 Requestオブジェクトはcookieの属性を含みます。これは、すべてのcookie変数とそれに対応する値の辞書オブジェクトです。それ自身の有効期限も含まれています。 Flaskでは、cookieはレスポンスオブジェクトに設定されています。以下の例を参照してください。

上記のアプリケーションを実行してブラウザのリンクhttp:// localhost:5000 /にアクセスしてください。 フォームは/ setcookieに設定されており、機能セットには別のWebページに表示されるCookie名userIDが含まれています。 cookie.htmlには、ブラウザに値を表示する別のビュー関数getcookie()へのハイパーリンクが含まれています。

フラスコでのセッション: Sessionでは、データはServerに保存されます。これは、クライアントがサーバーにログインしてユーザーがログアウトするまでの時間間隔として定義できます。それらの間のデータは、サーバー上の一時フォルダーに保持されています。各ユーザーには、特定のセッションIDが割り当てられています。 Sessionオブジェクトは、sessionに関連付けられている変数のキーと値のペアを含む辞書です。 SECRET_KEYは、暗号化されたデータをCookieに保存するために使用されます。 例えば: その他の重要なフラスコ機能: redirect():オブジェクトの応答を返すために使用され、指定されたステータスコードを持つ別のターゲットの場所にユーザーをリダイレクトします。 // locationは目的のURLにリダイレクトするために使用されます // statuscodeはヘッダ値を送信します、デフォルトは302 // responseは応答を開始するために使用されます。 abort:コード内のエラーを処理するために使用されます。 codeパラメーターは、それに応じてエラーを処理するために以下の値を取ることができます。

Flaskでのファイルアップロード Flaskでのファイルアップロードはとても簡単です。ファイルを取得し、オブジェクトを目的の場所に保存する、enctype属性とURLハンドラを持つHTMLフォームが必要です。ファイルは一時的にサーバー上に保存され、次に目的の場所に保存されます。 アップロードURLを処理するHTML構文は次のとおりです。 Flaskの次のpythonコードは次のとおりです。

サーバーのHTMLファイルへのフォームデータの送信 HTMLのフォームは、必要なエントリーの情報を収集するために使用され、それらのエントリーはその後転送され、サーバーに保管されます。これらは、フォームを読んだり変更したりするよう要求することができます。フラスコはURLルールを使用してこの機能を提供します。下記の例では、 '/' URLはフォームを持つWebページ(student.html)をレンダリングします。そこに記入されたデータは、result()関数を引き起こす/ resultURLに投稿されます。 results()関数はrequest.formにあるフォームデータを辞書オブジェクトに集め、それをレンダリングのためにresult.htmlに送ります。

メッセージ点滅: Webページに表示されるポップアップやダイアログボックス、あるいはJavaScriptのalertのようなものとして定義できます。これらはユーザーに通知するために使用されます。フラスコ内でこれを行うには、Flaskのメソッドflash()を使用します。メッセージを次のテンプレートに渡します。 messageは実際に表示されるテキストで、categoryはオプションです。エラーや情報を表示するためのものです。 例:

参照:Flaskのドキュメント

🐶 🐍 🐶Pythonコードの例を示すで

# an object of WSGI application 
from flask import Flask     
app = Flask(__name__)   # Flask constructor 
  
# A decorator used to tells the application 
# which URL is associated function 
@app.route('/')       
def hello(): 
    return 'HELLO'
  
if __name__=='__main__': 
   app.run() 
app.debug = True
app.run() 
app.run(debug = True) 
# decorator to route URL 
@app.route(/hello’)   
  
# binding to the function of route  
def hello_world():      
   return ‘hello world’ 
def hello_world(): 
   return ‘hello world’ 
app.add_url_rule(/, ‘hello’, hello_world) 
from flask import Flask 
app = Flask(__name__) 
  
# routing the decorator function hello_name 
@app.route('/hello/')   
def hello_name(name): 
   return 'Hello %s!' % name 
  
if __name__ == '__main__': 
   app.run(debug = True) 
from flask import Flask 
app = Flask(__name__) 
  
@app.route('/blog/') 
def show_blog(postID): 
   return 'Blog Number %d' % postID 
  
@app.route('/rev/') 
def revision(revNo): 
   return 'Revision Number %f' % revNo 
  
if __name__ == '__main__': 
   app.run() 
  
# say the URL is http://localhost:5000/blog/555 
from flask import Flask, redirect, url_for 
app = Flask(__name__) 
  
@app.route('/admin')  #decorator for route(argument) function 
def hello_admin():     #binding to hello_admin call 
   return 'Hello Admin'    
  
@app.route('/guest/') 
def hello_guest(guest):    #binding to hello_guest call 
   return 'Hello %s as Guest' % guest 
  
@app.route('/user/') 
def hello_user(name):     
   if name =='admin':  #dynamic binding of URL to function 
      return redirect(url_for('hello_admin'))   
   else: 
      return redirect(url_for('hello_guest', guest = name)) 
  
if __name__ == '__main__': 
   app.run(debug = True) 
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) 
<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> 
function sayHello() { 
   alert("Hello World") 
} 
from flask import Flask 
app = Flask(__name__) 
@app.route('/') 
def index(): 
   return render_template('index.html') 
<html> 
   <body> 
     
      <form action = "/setcookie" method = "POST"> 
         <p><h3>Enter userID</h3></p> 
         <p><input type = 'text' name = 'nm'/></p> 
         <p><input type = 'submit' value = 'Login'/></p> 
      </form> 
        
   </body> 
</html> 
@app.route('/setcookie', methods = ['POST', 'GET']) 
def setcookie(): 
   if request.method == 'POST': 
      user = request.form['nm'] 
     
   resp = make_response(render_template('cookie.html')) 
   resp.set_cookie('userID', user) 
     
   return resp 
  
@app.route('/getcookie') 
def getcookie(): 
   name = request.cookies.get('userID') 
   return '<h1>welcome '+name+'</h1>'
from flask import Flask, render_template, request 
from werkzeug import secure_filename 
app = Flask(__name__) 
  
@app.route('/upload') 
def upload_file(): 
   return render_template('upload.html') 
      
@app.route('/uploader', methods = ['GET', 'POST']) 
def upload_file(): 
   if request.method == 'POST': 
      f = request.files['file'] 
      f.save(secure_filename(f.filename)) 
      return 'file uploaded successfully'
          
if __name__ == '__main__': 
   app.run(debug = True) 
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) 
<!doctype html> 
<html> 
   <body> 
     
      <table border = 1> 
         {% for key, value in result.items() %} 
           
            <tr> 
               <th> {{ key }} </th> 
               <td> {{ value }} </td> 
            </tr> 
              
         {% endfor %} 
      </table> 
        
   </body> 
</html> 
<html> 
   <body> 
     
      <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 = "Maths" /></p> 
         <p><input type = "submit" value = "submit" /></p> 
      </form> 
   </body> 
</html> 
from flask import Flask 
app = Flask(__name__) 
  
# /login display login form 
@app.route('/login', methods = ['GET', 'POST'])  
  
# login function verify username and password 
def login():      
   error = None
     
   if request.method == 'POST': 
      if request.form['username'] != 'admin' or \ 
         request.form['password'] != 'admin': 
         error = 'Invalid username or password. Please try again !'
      else: 
  
         # flashes on successful login 
         flash('You were successfully logged in')  
         return redirect(url_for('index')) 
   return render_template('login.html', error = error) 

Last Updated: 5/19/2019, 1:43:17 AM