Python 中使用 Flask 框架

Flask 框架

$ pip install flask

寫一個app.py,處理3個URL,分別是:html

  • GET /:首頁,返回Home
  • GET /signin:登陸頁,顯示登陸表單;
  • POST /signin:處理登陸表單,顯示登陸結果。
from flask import Flask
from flask import request

app = 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:python

$ pip install jinja2

修改app.pyweb

# app.py

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()

增長模板文件:django

# 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>

運行:flask

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

除了Flask,常見的Python Web框架還有:app

  • Django:全能型Web框架;
  • web.py:一個小巧的Web框架;
  • Bottle:和Flask相似的Web框架;
  • Tornado:Facebook的開源異步Web框架。
相關文章
相關標籤/搜索