1. 程式人生 > >flask專案--新聞類專案

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

2

#建立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步:

  1. 自己呼叫generate_csrf生成隨機的csrf_token並儲存起來。

  2. 把csrf_token的內容告訴給客戶端。
    在這裡插入圖片描述

csrf_token產生

  1. 在客戶端發起請求時,如果請求方式有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()