與flask一樣,sanic也有一些自己的擴展,雖然生態不夠強大,但基本使用足夠了
sanic_session:用於保持會話,當用戶登錄過后,可以將用戶數據存到sanic_session里面,以后就可以從sanic_session里面取用戶信息,判斷用戶是否登錄過了
sanic_session官方文檔:https://sanic-session.readthedocs.io/en/latest/
安裝:pip install sanic_session
sanic_session提供了很多個模塊,基本都是和一些內存數據庫之間的交互信息的處理,這些很少使用,講點實際的
使用sanic_session
未綁定狀態:app.ctx是一個空對象
綁定后:app.ctx會有一個名為session的字典
后面就可以把想要共享或者儲存的數據都存在這個session中,要用的時候取出來即可
from sanic import Sanic, response
from sanic.views import HTTPMethodView
from sanic_session import Session
app = Sanic(__name__)
Session(app)
class UserView(HTTPMethodView):
async def get(self, request):
""" 檢查登錄狀態 """
user = request.ctx.session.get(request.args.get('user_name'))
if user:
return response.json({'code': 200, 'message': '用戶已登錄', 'user': user})
return response.json({'code': 400, 'message': '用戶未登錄', 'user': user})
async def post(self, request):
""" 模擬登錄 """
request.ctx.session[request.json.get('user_name')] = request.json
return response.json({'code': 200, 'message': '登錄成功'})
app.add_route(UserView.as_view(), '/user')
if __name__ == '__main__':
import uvicorn
uvicorn.run('test:app', host='0.0.0.0', port=8000, debug=True)