Python 3+Flashkインストール使用教程詳細

8852 ワード

一、Flaask設置環境構成
現在の開発環境はMinionda 3+PyCharmです。開発環境はどうでもいいです。自分でPython 3+Nodepadを使ってもいいです。Flaskライブラリのインストール:pip install Flask二、最初のFlashkアプリケーション
以下をハローワーク.pyとして保存します。

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

# route()        ;  spring    
@app.route('/helloworld')
def hello_world():
 return 'Hello, World!'

if __name__ == '__main__':
 # app.run(host, port, debug, options)
 #    :host="127.0.0.1", port=5000, debug=False
 app.run(host="0.0.0.0", port=5000)
このファイルを直接実行してからアクセスします。http://127.0.0.1:5000/helloworld。結果は下図のようです

三、getとpost実現
3.1使用するテンプレートファイルを作成する
Flashkはデフォルトでtemplatesディレクトリの下にテンプレートファイルを検索し、上のhellowworld.py同級ディレクトリの下でtemplatesフォルダを作成します。
templatesフォルダの下でget.を作成し、以下の内容を書き込みます。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>get    </title>
</head>
<body>
 <form action="/deal_request" method="get">
 <input type="text" name="q" />
 <input type="submit" value="  " />
 </form>
</body>
</html>
さらにtemplatesフォルダの下でpostsを作成し、以下の内容を書き込みます。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>post    </title>
</head>
<body>
 <form action="/deal_request" method="post">
 <input type="text" name="q" />
 <input type="submit" value="  " />
 </form>
</body>
</html>
最後にtemplatesフォルダの下でresult.1を作成し、以下の内容を書き込みます。

<!-- Flask   Jinja2    ,Jinja2      Django         Django     -->
<h1>{{ result }}</h1>
3.2作成に関する処理方法
ハロルド.pyにget_を追加します。html()、post_htmlとdeal_request()の3つの方法については、コメントを参照してください。現在のハローワールド.pyの内容は以下の通りです。

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

# route()        ;  spring    
#        :app.add_url_rule('/', 'helloworld', hello_world)
@app.route('/helloworld')
def hello_world():
 return 'Hello, World!'

#     ,   get.html   get_html()  
@app.route('/get.html')
def get_html():
 #   render_template()      templates      get.html  
 return render_template('get.html')

#     ,   post.html   post_html()  
@app.route('/post.html')
def post_html():
 #   render_template()      templates      post.html  
 return render_template('post.html')

#     ,   deal_request   deal_request()  
#     get  ,    methods       post  
#          methods = ['POST']   post  ,         if 
@app.route('/deal_request', methods = ['GET', 'POST'])
def deal_request():
 if request.method == "GET":
 # get  request.args.get("param_name","")       
 get_q = request.args.get("q","")
 return render_template("result.html", result=get_q)
 elif request.method == "POST":
 # post  request.form["param_name"]       
 post_q = request.form["q"]
 return render_template("result.html", result=post_q)

if __name__ == '__main__':
 # app.run(host, port, debug, options)
 #    :host=127.0.0.1, port=5000, debug=false
 app.run()
3.3運転効果を確認する
hellowworld.pyを再実行します。
現在のディレクトリ構造は以下の通りです。

get.は以下の通りである

getクエリの結果は以下の通りです。

posts.

ポストクエリの結果は以下の通りです。

四、レストful
レジスタントfulとは、jsonなどの形式で要求を行い、以前のものではなくjsonなどの形式で応答することである。
その後、我々はcurlシミュレーションにより、rest要求を行い、jsonityを使って、rest応答を実現します。
4.1サービスエンド実現コード

#   Flask 
from flask import Flask, jsonify
from flask import render_template
from flask import request

#    ,       
app = Flask(__name__)

# route()        ;  spring    
#        :app.add_url_rule('/', 'helloworld', hello_world)
@app.route('/helloworld')
def hello_world():
 return 'Hello, World!'

#     ,   get.html   get_html()  
@app.route('/get.html')
def get_html():
 #   render_template()      templates      get.html  
 return render_template('get.html')

#     ,   post.html   post_html()  
@app.route('/post.html')
def post_html():
 #   render_template()      templates      post.html  
 return render_template('post.html')

#     ,   deal_request   deal_request()  
#     get  ,    methods       post  
#          methods = ['POST']   post  ,         if 
@app.route('/deal_request', methods=['GET', 'POST'])
def deal_request():
 if request.method == "GET":
 # get  request.args.get("param_name","")       
 get_q = request.args.get("q","")
 return render_template("result.html", result=get_q)
 elif request.method == "POST":
 # post  request.form["param_name"]       
 post_q = request.form["q"]
 return render_template("result.html", result=post_q)

@app.route('/rest_test',methods=['POST'])
def hello_world1():
 """
   request.json       post   
   jsonify    json  
 """
 post_param = request.json
 result_dict = {
 "result_code": 2000,
 "post_param": post_param
 }
 return jsonify(result_dict)


if __name__ == '__main__':
 # app.run(host, port, debug, options)
 #    :host=127.0.0.1, port=5000, debug=false
 app.run()
4.2要求シミュレーション

curl -H "Content-Type:application/json" -X POST --data '{"username": "ls","password":"toor"}' http://127.0.0.1:5000/rest_test
4.3効果スクリーンショット

五、FlashkとDjangoの比較
5.1 Django配置が複雑である
Djangoについてよく知らないなら、参加してみてもいいです。
Python 3+PyCharm+Django+Django REST frame ebook開発教程詳細解
Python 3+Django get/post要求実現教程詳細
文章の長さだけから見れば、この文章よりずっと長いので、DjangoはFlashkより複雑であることは間違いない。より具体的な比較は以下の通りです。
比較項目
Django
Flashk
複雑度の比較
説明
プロジェクトの作成
Djangoはコマンドでプロジェクトを作成する必要があります。
Flashkはファイルを直接作成すれば実行できます。
Djangoは複雑です
Django命令でプロジェクトを作成する必要があるのは、プロジェクト全体のフレームを作成するためです。
ルート
Djangoは専門のurls.pyファイルを使います。
Flashk直接使用@ap.route()
Djangoは重いです
DjangoはStrut 2のような構成FlashkはSpringのような構成で、Flashkはより良い感じがします。
getとpost
request.GET['name']とrequest.POST["name"]
request.args.get(「name」「」)とrequest.form[q]
ほとんど同じです
Flashkフォーマットが統一されていません。
レスファル
django-refulフレームを使う
Jsonityを使う
ほとんど同じです
Flashkは単独でappを作る必要がなくて、もっと直観的です。
データベース操作
djangoデータベースの操作を統合しました。
Flaskはデータベースに統合されていません。別の操作は直接接続またはsqlalchemyを使います。
ほとんど同じです
djangoの複雑さは、データベースの統合に大きく起因しています。
5.2 FlashkとDjangoはそれぞれ場面を使うのに適しています。
DjangoはPythonの最も人気のあるウェブフレームですが、配置が複雑です。Flashkはライト級のフレーム構成が簡単です。もしプロジェクトが小さいなら、Flashkを使うことを勧めます。
さらに、Flashkの軽量化源は、「当分使わない機能は処理しない」というもので、Djangoは複雑にその「使用可能な機能は先に集積する」から来ています。プロジェクト規模の拡大に伴い最終的にDjangoにあるものもFlashkに必要です。
だから、もし普段はpythonを使って、東は倉庫を使って、東は一つのシーンを書いて、ウェブを専門に開発するのではなくて、Flashkを使うのに適しています。そうすると、勉強のコストが低くて、以前の知識も全部使えます。
本論文では、Python 3+Flashkのインストールについての教程を説明します。もしPython 3+Flashkについての知識をもっと調べたいなら、次の関連記事をクリックしてください。