python学習日記-2016.8.3

3079 ワード

1.問題が発生しました.Flaskパッケージをインストールしてインポートできない理由を発見しました.pyファイルの名前はflaskです.py、flaskフレームワークの名前と一致するので、IDEは自動的に自分の解決方法をインポートすることを認識します:pyファイルの名前を変更します
2.Webフレームワークflask Flaskを使用してPythonのデコレーションで内部で自動的にURLと関数を関連付けるので、私たちが書いたコードはこうです.
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home(): 
  return '

Home

' @app.route('/signin', methods=['GET']) def signin_form(): return '''

''' @app.route('/signin', methods=['POST']) def signin(): # request : if request.form['username']=='admin' and request.form['password']=='password': return '

Hello, admin!

' return '

Bad username or password.

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

python appを実行します.py,Flaskが持参したサーバはポート5000で傍受する:
$ python app.py 
* Running on http://127.0.0.1:5000/

3.テンプレートの使用
Webアプリの最も複雑な部分はHTMLページにあります.HTMLは正しいだけでなく、CSSで美化し、複雑なJavaScriptスクリプトを加えて様々なインタラクションとアニメーション効果を実現します.要するに、HTMLページを生成するのは難しいです.上のコードはビジネスロジックとページを混在させ、コードのメンテナンスとページの再構築に不利です.そのため、mvcモードを使用してビューレイヤとビジネスロジックを分離する必要があります.
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home(): 
  return render_template('home.html')
@app.route('/signin', methods=['GET'])
def signin_form(): 
  return render_template('form.html')
@app.route('/signin', methods=['POST'])
def signin(): 
  username = request.form['username'] 
  password = request.form['password'] 
  if username=='admin' and password=='password': 
    return render_template('signin-ok.html', username=username) 
  return render_template('form.html', message='Bad username or password', username=username)

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

その中で、home.html,signin-ok.html,form.htmlはappに置く.py同級のフォルダの下はhomeです.htmlのコード

 
  Home

 
  

Home


次はformです.htmlのコード

 
Please Sign In

 
  {% if message %} 
  

{{ message }}

{% endif %}
Please sign in:


次はsignin-okのコードです

 
  Welcome, {{ username }}

 
  

Welcome, {{ username }}!