flask專案--新聞類專案
1.Flask專案基本設定
資料庫配置-Flask-SQLAlchemy擴充套件使用。
from flask_sqlalchemy import SQLAlchemy
class Config(object):
“”“專案配置類”""
# 資料庫相關配置
# 使用的資料庫連結地址
SQLALCHEMY_DATABASE_URI = ‘mysql://:@:host:port/’
# 關閉追蹤資料庫的修改
SQLALCHEMY_TRACK_MODIFICATIONS = False
#建立SQLAlchemy物件
db = SQLAlchemy(app)
session儲存的設定-Flask-Session擴充套件的使用。
from flask_session import Session
class Config(object):
“”“專案配置類”""
# session儲存的相關配置
# 設定session儲存到redis中
SESSION_TYPE = ‘redis’
# redis連結物件(給flask-session擴充套件使用的)
SESSION_REDIS = redis.StrictRedis(host=, port=)
# 開啟返回給瀏覽器cookie session
值的加密
SESSION_USE_SIGNER = True
# 設定session過期時間
PERMANENT_SESSION_LIFETIME = 243600
#建立Session物件
Sesssion(app)
為Flask專案開啟CSRF保護-Flask-WTF擴充套件中CSRFProtect類的使用。
flask專案沒有CSRF(跨站請求偽造)保護,需要使用CSRFProtect來開啟。
from flask_wtf.csrf import CSRFProtect
#為flask專案開啟CSRF保護,預設針對POST
|PUT
|DELETE
|PATCH
四種請求方式有保護驗證。
CSRFProtect(app)
注: CSRFProtect只幫助我們做CSRF驗證工作。
需要我們自己實現以下3步:
-
自己呼叫generate_csrf生成隨機的csrf_token並儲存起來。
-
把csrf_token的內容告訴給客戶端。
csrf_token產生
- 在客戶端發起請求時,如果請求方式有csrf驗證,需要在表單資料或請求頭中攜帶csrf_token。csrf_token請求攜帶
命令列管理和資料庫遷移管理-Flask-Script擴充套件&Flask-Migrate擴充套件使用。
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
#建立Manager管理物件
manager = Manager(app)
#建立Migrate物件
Migrate(app, db)
新增資料庫遷移管理命令
manager.add_command(‘db’, MigrateCommand)
if name == ‘main’:
manager.run()