日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python flask Blueprint搭建

發布時間:2023/12/9 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python flask Blueprint搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隨著功能的添加,路由越來越多,view層的拆分變成了剛需
藍圖的殺手锏是將你的應用組織成不同的組件,比如把這里的admin,main,course等相關的視圖方法分為組件。這時我們可以
創建三個藍圖實現這兩個獨立的組件。static文件存放的是靜態文件,templates是模板。
目錄結構


Blueprint
首先是我們項目的配置文件(config.py)
# -*- coding: utf-8 -*-
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config:
????SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
????SQLALCHEMY_COMMIT_ON_TEARDOWN = True
????FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
????FLASKY_MAIL_SENDER = 'Flasky Admin <flasky@example.com>'
????FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
????@staticmethod
????def init_app(app):
????????pass
?
# 開發環境的配置
class DevelopmentConfig(Config):
????DEBUG = True
????MAIL_SERVER = 'smtp.googlemail.com'
????MAIL_PORT = 587
????MAIL_USE_TLS = True
????MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
????MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
????SQLALCHEMY_DATABASE_URI = "mysql://root:123456@localhost/flasktestdb"
????RECAPTCHA_PUBLIC_KEY = '6LeYIbsSAAAAACRPIllxA7wvXjIE411PfdB2gt2J'
????RECAPTCHA_PRIVATE_KEY = '6LeYIbsSAAAAAJezaIq3Ft_hSTo0YtyeFG-JgRtu'
?
# 測試環境的配置
class TestingConfig(Config):
????TESTING = True
????SQLALCHEMY_DATABASE_URI = "mysql://root:123456@localhost/flasktestdb"
????RECAPTCHA_PUBLIC_KEY = '6LeYIbsSAAAAACRPIllxA7wvXjIE411PfdB2gt2J'
????RECAPTCHA_PRIVATE_KEY = '6LeYIbsSAAAAAJezaIq3Ft_hSTo0YtyeFG-JgRtu'
?
?
# 生產環境的配置
class ProductionConfig(Config):
????SQLALCHEMY_DATABASE_URI = "mysql://root:123456@localhost/flasktestdb"
?
?
????RECAPTCHA_PUBLIC_KEY = '6LeYIbsSAAAAACRPIllxA7wvXjIE411PfdB2gt2J'
????RECAPTCHA_PRIVATE_KEY = '6LeYIbsSAAAAAJezaIq3Ft_hSTo0YtyeFG-JgRtu'
?
?
config = {
????'development': DevelopmentConfig,
????'testing': TestingConfig,
????'production': ProductionConfig,
????'default': DevelopmentConfig
}
app應用(app/__init__.py)

# -*- coding: utf-8 -*-
from flask import Flask, render_template
from flask_bootstrap import Bootstrap
from flask_mail import Mail
from flask_sqlalchemy import SQLAlchemy
from config import config
from flask_login import LoginManager
?
bootstrap = Bootstrap()
mail = Mail()
db = SQLAlchemy()
login_manager = LoginManager()
# None basic strong
login_manager.session_protection = "strong"
login_manager.login_view = "main.login"
login_manager.login_message = u'請先登錄'
app = Flask(__name__, static_url_path='')
?
# jquery.tmpl 和 jinja2 模板語法沖突 修改 jinja2的模板語法
app.jinja_env.variable_start_string = '{{ '
app.jinja_env.variable_end_string = ' }}'
?
def create_app(config_name):
????app.config.from_object(config[config_name])
????config[config_name].init_app(app)
????bootstrap.init_app(app)
????mail.init_app(app)
????db.init_app(app)
????login_manager.init_app(app)
????
? ? # 項目啟動時自動創建數據庫
????with app.test_request_context():
????????from .models import User,Document,Video
????????db.create_all()
?
?
????# 注冊main組件的藍圖
????from .main import main as main_blueprint
????app.register_blueprint(main_blueprint)
????
????# 注冊admin組件的藍圖
????from .admin import admin as admin_blueprint
????app.register_blueprint(admin_blueprint)
????
????# 注冊course組件的藍圖
????from .course import course as course_blueprint
????app.register_blueprint(course_blueprint)
?
????return app
app中的models.py 文件是數據庫模型,emails.py 是發郵件
運行文件(manager.py)
# -*- coding: utf-8 -*-
import os
from app import create_app, db
from flask_script import Manager,Server
?
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
?
manager = Manager(app)
#開啟多線程
manager.add_command("runserver", Server(threaded=True))
?
if __name__ == '__main__':
????manager.run()
admin組件(admin/__init__.py)
# -*- coding: utf-8 -*-
from flask import Blueprint
#創建藍圖admin
admin = Blueprint('admin', __name__)
#從當前文件夾導入views和errors文件,定義的視圖/路由就會加載。
from . import views,errors
main和course包中的__init__.py文件是一樣的創建,注意要把名字改一下。

每個藍圖的錯誤頁面是一樣的(errors.py)
# -*- coding: utf-8 -*-
from flask import render_template
from . import admin
?
@admin.app_errorhandler(404)
def page_not_found(e):
????return render_template('404.html'), 404
?
@admin.app_errorhandler(500)
def internal_server_error(e):
????return render_template('500.html'), 500
在錯誤頁面里面只定義了404和500的錯誤

flask 藍圖框架已經搭建完成,剩下的只需要完成各個模塊的功能路由即可。
---------------------?
作者:凡夫俗子66?
來源:CSDN?
原文:https://blog.csdn.net/m0_38061194/article/details/79310437?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的python flask Blueprint搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人在线小视频 | 男女做爰猛烈吃奶啪啪喷水网站 | 91丨九色丨国产 | 日韩黄色免费观看 | 激情小视频 | 在线观看的网站 | 羞羞色院91蜜桃 | 北条麻妃一二三区 | 日本欧美国产一区二区三区 | 男生操女生免费网站 | 欧美野外猛男的大粗鳮 | 国产露脸无套对白在线播放 | 五月激情综合 | 亚洲天堂美女 | 操伊人 | 一本大道综合伊人精品热热 | 成人香蕉视频在线观看 | 秘密基地电影免费版观看国语 | 久射网 | 人人射影院 | 成人在线视频网址 | 综合一区二区三区 | 久久一级片 | 久久91精品国产91久久小草 | 黄色片免费在线播放 | 久久精品99久久久久久 | 6080午夜伦理 | 国家队动漫免费观看在线观看晨光 | 日日色av | 国产污在线观看 | 日韩一区二区视频 | 国产激情综合 | 亚洲国产欧美一区二区三区深喉 | 绿帽视频| 久久94 | 久久精品婷婷 | www.555国产精品免费 | 色狠狠一区二区 | 久青草资源福利视频 | 禁断介护av| 午夜精品一区二区三区在线观看 | 91国产高清| 午夜一区二区三区在线观看 | 成年人看的羞羞网站 | 国产一级免费片 | 中文字幕亚洲综合 | 在线精品免费视频 | 中文字幕av一区二区三区谷原希美 | 在线观看视频免费 | 国产91精品一区 | av片手机在线观看 | 极品尤物一区二区 | 亚洲不卡在线播放 | 麻豆69xxnxxporn| 亚洲免费看片 | 九一国产在线 | 久久精品女人毛片国产 | 各种含道具高h调教1v1男男 | 亚洲视频一区二区 | 91成人在线观看高潮 | 亚洲春色www| 日本一级大毛片a一 | 夜夜操影院 | 国产精品人人 | 黄视频免费在线观看 | 黄色天堂网| 成人综合网址 | 给我看高清的视频在线观看 | 毛利兰被扒开腿做同人漫画 | 天堂俺去俺来也www久久婷婷 | 超碰自拍 | 国产伦乱| 秋霞影院午夜老牛影院 | 成人综合在线观看 | 日韩在线高清 | 999xxxxx| 吻胸摸激情床激烈视频 | 少妇免费毛片久久久久久久久 | 国产美女永久无遮挡 | 精品国产成人av在线免 | 91超碰免费在线 | 亚洲国产日韩在线 | 欧美一级片一区 | 吊视频一区二区三区 | 好逼天天操 | 一区二区少妇 | 欧美久久成人 | 成人在线不卡视频 | 国产亚洲精品久久久久久无几年桃 | 欧美巨大乳| 午夜精品导航 | 日韩精品在线视频免费观看 | 欧美激情视频一区二区 | 就去色综合 | 国产伦人伦偷精品视频 | 色悠悠国产 | 欧美一级做性受免费大片免费 | 中文字幕在线观看网站 | 澳门av在线 |