Flask框架
WSGI(Web服务器网关接口Python Web Server Gateway Interface,缩写为WSGI)提供的接口虽然比HTTP接口高级了不少,但和Web App的处理逻辑比,还是比较低级,我们需要在WSGI接口之上能进一步抽象,让我们专注于用一个函数处理一个URL,至于URL到函数的映射,就交给Web框架来做
用Python开发一个Web框架十分容易,所以Python有上百个开源的Web框架。这里我们先不讨论各种Web框架的优缺点,直接选择一个比较流行的Web框架——Flask来使用
项目–聊天室
以下每一个程序都是独立可以运行的服务
第一步:启动服务器
启动服务,进入主页,显示欢迎光临。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<h1>欢迎光临我的网站</h1>"
app.run() # 启动服务器
# app.run(host="0.0.0.0", port=5001) # 设置更多参数-服务器
第二步:添加更多路由
网站不可能只有一个页,下面我们增加不同的路由页面
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
"""首页"""
return "<h1>欢迎光临</h1> <p> 发信息给某人可以这样: /USERNAME/MESSAGE </p>"
@app.route("/<username>")
def user(username):
return "你好!" + username
@app.route("/<username>/<message>")
def send_message(username, message):
"""通过路由设置:/人名称/信息内容 来实现发送信息给某人"""
return "{0}: {1}".format(username, message)
# 增加一个关于我们 /about
app.run() # 启动服务器
第三步:保存信息
刚才我们发的消息都没有保存起来,下次打开网站消息就没有,怎么能聊天呢? 没有保存信息,我怎么能看到信息呢?所有一定要找个地方把信息保存起来。
from flask import Flask, redirect
from datetime import datetime
app = Flask(__name__)
messages = [] # 保存聊天信息到列表
def add_messages(username, message):
# 添加消息,保存在列表里面
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # 记录时间:格式:00:00:00
messages.append("({}) {}: {}".format(now, username, message))
def get_all_messages():
"""获取关于我的所有聊天信息`"""
return "<br>".join(messages)
@app.route("/")
def index():
"""首页"""
return "<h1>欢迎光临</h1> <p> 发信息给某人可以这样: /USERNAME/MESSAGE </p>"
@app.route("/<username>")
def user(username):
"""显示所有消息"""
return "<h1>欢迎, {0}</h1>{1}".format(username, get_all_messages())
@app.route("/<username>/<message>")
def send_message(username, message):
"""
通过路由设置:/人名称/信息内容 来实现发送信息给某人
添加信息到列表里面,然后返回到用户页面
"""
add_messages(username, message)
return redirect("/" + username)
app.run(host="0.0.0.0", port=5000) # 启动服务器