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框架。