flask項目:新聞信息網(wǎng)站1

創(chuàng)建項目

GitHub中create a new repository----flask_new_info
克隆到本地,在pycharm中打開
配置虛擬環(huán)境



項目下創(chuàng)建manage.py,添加如下代碼:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
    return 'index'
if __name__ == '__main__':
    app.run()

點擊運行,進(jìn)入頁面,如果頁面中有index,就配置成功

session存儲

安裝Redishttp://www.itdecent.cn/p/9307d4c16791

創(chuàng)建Redis數(shù)據(jù)庫
點擊connect to redis server,后輸入名和host


manage.py

import redis
from flask import Flask, session
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import CSRFProtect
from flask_session import Session

class Config(object):
    """工程配置信息"""
    SECRET_KEY = "EjpNVSNQTyGi1VvWECj9TvC/+kq3oujee2kTfQUs8yCM6xX9Yjq52v54g+HVoknA"
    DEBUG = True
    # 數(shù)據(jù)庫的配置信息
    SQLALCHEMY_DATABASE_URI = "mysql://root:root@127.0.0.1:3306/information14"
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT = 6379
    # flask_session的配置信息
    SESSION_TYPE = "redis"  # 指定 session 保存到 redis 中
    SESSION_USE_SIGNER = True  # 讓 cookie 中的 session_id 被加密簽名處理
    SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT)  # 使用 redis 的實例
    SESSION_PERMANENT = False
    PERMANENT_SESSION_LIFETIME = 86400  # session 的有效期,單位是秒

app = Flask(__name__)

app.config.from_object(Config)
# 初始化數(shù)據(jù)庫
db = SQLAlchemy(app)
# 初始化redis 對象
redis_store = redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)
# 開啟csrf保護(hù),只做服務(wù)器驗證功能,
CSRFProtect(app)
# 設(shè)置session保存指定位置
Session(app)

@app.route('/')
def index():
    session['name'] = 'ssq'
    return 'index'

if __name__ == '__main__':
    app.run()

在Navicat中創(chuàng)建對應(yīng)的數(shù)據(jù)庫



運行后進(jìn)入頁面沒錯誤,Redis數(shù)據(jù)庫會有數(shù)據(jù)


migrate

在manage.py中添加:

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
# flask_script
manager = Manager(app)
# 數(shù)據(jù)庫遷移
Migrate(app, db)
manager.add_command('db', MigrateCommand)

并將app.run()改成manager.run()



點擊edit config...,按照下圖操作


項目拆分

各司其職,方便后期維護(hù)

  • manage.py 只負(fù)責(zé)基本的啟動工作
  • app 的創(chuàng)建在 info 下的__ init __ 中
  1. 創(chuàng)建config.py,將Config全部剪切其中,并將app.config全部去掉
import redis


class Config(object):
    """工程信息配置"""
    SECRET_KEY = "EjpNVSNQTyGi1VvWECj9TvC/+kq3oujee2kTfQUs8yCM6xX9Yjq52v54g+HVoknA"

    DEBUG = True
    # 導(dǎo)入數(shù)據(jù)庫配置
    # 設(shè)置數(shù)據(jù)庫連接
    SQLALCHEMY_DATABASE_URI= 'mysql://root:root@127.0.0.1:3306/information22'
    # 動態(tài)追蹤設(shè)置
    SQLALCHEMY_TRACK_MODUFICATIONS = True
    # 顯示原始sql
    SQLALCHEMY_ECHO = True

    REDIS_HOST = "127.0.0.1"
    REDIS_POST = 6379
    # flask_session配置信息
    SESSION_TYPE = 'redis' #指定session保存到Redis中
    SESSION_USE_SIGNER = True   #讓cookie中的sessionid 被加密處理
    # 使用Redis實例
    SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_POST)
    SESSION_PERMANENT = False
    PERMANENT_SESSION_LIFETIME = 86400  #session有效期  秒

  1. 創(chuàng)建info包,里面會有__ init __ .py,app的創(chuàng)建部分全部剪切其中
from flask import Flask
from flask_session import Session
from flask_sqlalchemy import SQLAlchemy
import redis
from flask_wtf import CSRFProtect

from config import Config

app = Flask(__name__)

app.config.from_object(Config)
db = SQLAlchemy(app)
# 初始化Redis配置
redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_POST)
# 開啟csrf保護(hù),只用于服務(wù)器驗證功能
CSRFProtect(app)
# 設(shè)置session保存指定位置
Session(app)
  1. 最后manage.py只負(fù)責(zé)基本的啟動工作
from flask import session
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from info import app, db

# flask_script
manager = Manager(app)
# 數(shù)據(jù)庫遷移
Migrate(app, db)
manager.add_command('db', MigrateCommand)

@app.route('/')
def index():
    session['name'] = 'ssq'
    return 'index'

if __name__ == '__main__':
    manager.run()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容