Flask 框架

$ pip install flask

写一个app.py,解决3个URL,别离是:

  • GET /:首页,返回Home
  • GET /signin:登录页,显示登录表单;
  • POST /signin:解决登录表单,显示登录后果。
from flask import Flaskfrom flask import requestapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home():    return '<h1>Home</h1>'@app.route('/signin', methods=['GET'])def signin_form():    return '''<form action="/signin" method="post">              <p><input name="username"></p>              <p><input name="password" type="password"></p>              <p><button type="submit">Sign In</button></p>              </form>'''@app.route('/signin', methods=['POST'])def signin():    if request.form['username']=='admin' and request.form['password']=='password':        return '<h3>Hello, admin!</h3>'    return '<h3>Bad username or password.</h3>'if __name__ == '__main__':    app.run()

应用模板

Flask默认反对的模板是jinja2,所以咱们先装置jinja2:

$ pip install jinja2

批改app.py

# app.pyfrom flask import Flask, request, render_templateapp = 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()

减少模板文件:

# templates/form.html<html><head>  <title>Please Sign In</title></head><body>  {% if message %}  <p style="color:red">{{ message }}</p>  {% endif %}  <form action="/signin" method="post">    <legend>Please sign in:</legend>    <p><input name="username" placeholder="Username" value="{{ username }}"></p>    <p><input name="password" placeholder="Password" type="password"></p>    <p><button type="submit">Sign In</button></p>  </form></body></html>
# templates/signin-ok.html<html><head>  <title>Welcome, {{ username }}</title></head><body>  <p>Welcome, {{ username }}!</p></body></html>

运行:

$ python app.py  * Running on http://127.0.0.1:5000/

除了Flask,常见的Python Web框架还有:

  • Django:全能型Web框架;
  • web.py:一个玲珑的Web框架;
  • Bottle:和Flask相似的Web框架;
  • Tornado:Facebook的开源异步Web框架。