1. 程式人生 > >flask web開發:主程式從單檔案到多檔案的轉化——第四步

flask web開發:主程式從單檔案到多檔案的轉化——第四步

第四步:在第三步的時候,我們的程式功能分割,大致已經完成了,第四步是在原有的基礎上,對多檔案的結構進行優化和調整,這裡要使用藍本,讓程式更加模組化。 現有的目錄架構為: 頂級目錄: manage.py config.py data.sqlite
data-dev.sqlite app目錄 migrations目錄 venv目錄 其中venv目錄包含虛擬環境中的檔案,細節不表,migrations目錄包含資料庫遷移檔案,細節不表。 app目錄: __init__.py emails.py errors.py froms.py models.py views.py static目錄 templates目錄 使用藍本,對路由進行劃分,進而方便顯示不同的內容,本例只有主頁面,所以只建立一個main藍本,main藍本將會容納網站主頁的所有需要的檢視、靜態資源和渲染模板,預計app目錄將修改為: __init__.py
emails.py
models.py
static目錄 templates目錄 main目錄 main目錄內容: __init__.py views.py
errors.py
froms.py 首先定義app/main/__init__.py檔案內容: from flask import Blueprint main = Blueprint('main', __name__) from . import views, errors 其次,修改app/__init__.py中的註冊檢視函式的部分,由:     app = view(app)     app = error(app) 改為: from .main import main as main_blueprint app.register_blueprint(main_blueprint) 並刪除掉一些模組匯入,最後為: from flask import Flask from flask.ext.bootstrap import Bootstrap from flask.ext.mail import Mail from flask.ext.moment import Moment from flask.ext.sqlalchemy import SQLAlchemy from config import config bootstrap = Bootstrap() mail = Mail() moment = Moment() db = SQLAlchemy() from .models import User,Role def create_app(config_name):     app = Flask(__name__)     app.config.from_object(config[config_name])     config[config_name].init_app(app)     bootstrap.init_app(app)     mail.init_app(app)     moment.init_app(app)     db.init_app(app)     from .main import main as main_blueprint     app.register_blueprint(main_blueprint)     return app 修改app/main/errors.py為: from flask import render_template from . import main @main.app_errorhandler(404) def page_not_found(e):     return render_template('404.html'), 404 @main.app_errorhandler(500) def internal_server_error(e):     return render_template('500.html'), 500 修改app/main/views.py為: from flask import render_template, session, redirect, url_for, current_app  #此處的current_app匯入是關鍵 from .. import db from ..models import User from ..emails import send_email from . import main from .forms import NameForm @main.route('/', methods=['GET', 'POST']) def index():     form = NameForm()     if form.validate_on_submit():         user = User.query.filter_by(username=form.name.data).first()         if user is None:             user = User(username=form.name.data)             db.session.add(user)             session['known'] = False             if current_app.config['FLASKY_ADMIN']:    #使用current_app代替app,這裡使用main也是不行的。                 send_email(current_app.config['FLASKY_ADMIN'], 'New User',  #同上                            'mail/new_user', user=user)         else:             session['known'] = True         session['name'] = form.name.data         return redirect(url_for('.index'))     return render_template('index.html',                            form=form, name=session.get('name'),                            known=session.get('known', False)) 同樣,看到send_email函式的引數設定已經恢復原樣了,並增加了非同步傳送功能,這裡修改emails.py檔案為: from threading import Thread from flask import current_app, render_template from flask.ext.mail import Message from . import mail def send_async_email(app, msg):     with app.app_context():         mail.send(msg) def send_email(to, subject, template, **kwargs):     app = current_app._get_current_object()     msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX'] + ' ' + subject,                   sender=app.config['FLASKY_MAIL_SENDER'], recipients=[to])     msg.body = render_template(template + '.txt', **kwargs)     msg.html = render_template(template + '.html', **kwargs)     thr = Thread(target=send_async_email, args=[app, msg])     thr.start()     return thr 最後執行:$ python manage.py runserver --host 0.0.0.0 -r -d
瀏覽器輸入URL顯示:
輸入四牛,提交後很快回顯,因為這裡使用了非同步傳送郵件:
然後收到郵件:
終於大功告成!

相關推薦

flask web開發主程式檔案檔案轉化——第一

    初看第七章,一頭霧水,然後就看不下去了,後來下定決心,從第一章再看一遍,不懂的必須查明,再次到這裡的時候,不那麼迷茫了,但是覺得書上講解得不夠細緻,單個檔案是如何一步步到多檔案結構的?書上直接給你一個結構範例,讓你往上套,老手倒是無所謂,可是苦了我等新手,於是借鑑書

flask web開發主程式檔案檔案轉化——

第四步:在第三步的時候,我們的程式功能分割,大致已經完成了,第四步是在原有的基礎上,對多檔案的結構進行優化和調整,這裡要使用藍本,讓程式更加模組化。 現有的目錄架構為: 頂級目錄: manage.py config.py data.sqlite data-dev.sql

Flask Web開發基於Python的Web應用開發實戰》pdf 免費下載

需求 png 入行 14. 導入 框架 錯誤 pla 引用 《Flask Web開發:基於Python的Web應用開發實戰》pdf 免費下載鏈接: https://u253469.ctfile.com/fs/253469-292665036 第一部分 Flask

Flask Web開發基於Python的Web應用開發實戰》pdf 完整版免費下載

項目 工廠 技術分享 各類 視圖 第2章 靜態文件 閱讀 擁有 《Flask Web開發:基於Python的Web應用開發實戰》.pdf pdf 完整版免費下載: https://u253469.ctfile.com/fs/253469-292665036 更多電子書下

[分享]《Flask Web開發基於Python的Web應用開發實戰(2版)》中文PDF+源代碼

全面介紹 flask 技術 ESS nfs 圖片 ges web應用開發 復制粘貼 下載:Flask Web開發第二版《Flask Web開發:基於Python的Web應用開發實戰》第二版中文PDF,324頁,帶目錄和書簽,文字能夠復制粘貼;配套源代碼;經典書籍第二版,講解

Flask Web開發基於Python的Web應用開發實戰PDF

Flask Web開發:基於Python的Web應用開發實戰PDF 百度網盤 連結:https://pan.baidu.com/s/1_Ax_ubMUOwwfoNPUn2mDeQ 提取碼:s39f 複製這段內容後開啟百度網盤手機App,操作更方便哦 內容簡介  · · 

Python進階(五十三)-Flask Web開發實現將表渲染成HTML

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興! Python進階(五十三)-Flask Web來發實現將表單渲染成HTML   在利用Flask進行Python Web開發時,頁面中的wt

Flask Web開發基於Python的Web應用開發實戰》筆記(原創)

內容提要 在學習“狗書”《Flask Web開發:基於Python的Web應用開發實戰》的過程中,一直遇到各種各樣的坑。該書的第一部分是“Flask簡介”,主要介紹的一些基礎知識。第二部分是“例項:社交部落格程式”,講的是如何搭建一個社交部落格的框架。目前我學到

Flask之旅《Flask Web開發基於Python的Web應用開發實戰》學習筆記

《Flask Web開發:基於Python的Web應用開發實戰》 點選上方的“目錄”快速到達哦! 雖然簡單的網站(Flask+Python+SAE)已經上線,但只是入門。開發大型網站,系統地學習一遍還是有必要的。 1 虛擬環境 2016-6-8 書上介紹了

Flask Web開發基於Python的Web應用開發實戰》PDF下載

下載連結:   前言 ...............................................................................................................................

Flask Web開發用Select2實現類似知乎的標籤系統

知乎的標籤是這樣的 用Select 2實現的是這樣的 實現分類 Select2主要是用來美化分類表單,在使用之前要先實現分類的功能,簡單的可以一對多,難一點可以搞一個多對多 一對多關係的分類 如果只是想一篇文章設定一個分類,可以用一對多,“

Flask Web開發基於Python的Web應用開發實戰》筆記一

開發實戰 返回 2.3 激活 下載 index document main 特殊 一、安裝 簡介: 在大多數標準匯總,Flask都算是小型框架,甚至可以成為“微框架”。同時具備高擴展的能力,具有一個包含基本服務的強健核心,其他功能可通過擴展實現。 兩個主要依賴:路由、調

Flask Web開發基於Python的Web應用開發實戰》筆記二、

客戶端 正則表達式驗證 結束 comm ash red 單選 接受 boolean 第三章、模板 ?視圖函數作用即生成請求的響應,如果把業務邏輯和表現邏輯混在一起會導致代碼難以理解和維護。吧表現邏輯轉移到模板中能夠提升程序的可維護性。?模板是一個響應文本的文件,其中包含用

Flask web開發》筆記2模板---繼承、bootstrap

only world use 可能 clas 似的 () 目前 div 前言:今天重新梳理了一下前端方面的知識,發現學習東西還是要用,不然忘得快,廢話不多說,開始!! 一.模板繼承 1.概念: 書上說,模板繼承,類似Python上的繼承; 其實個人覺得和所有繼承

Flask web開發01初識 Flask

flask python 端點 shell ask 項目 配置 環境 擴展 一、 搭建開發環境 二、Hello Flask! 三、啟動開發服務器 四、Python Shell 五、Flask 擴展 六、項目配置 七、URL 與端點 八、Flask 命令 九、模板與靜態文件

分享《Flask Web開發實戰入門、進階與原理解析》PDF+源代碼

1.0 baidu rip 更多 aid size log fff web 下載:https://pan.baidu.com/s/1gbC5uhh_vjVbDk55_p7SOA 更多資料分享:http://blog.51cto.com/3215120 《Flask Web開

Flask Web開發實戰入門、進階與原理解析》PDF+原始碼

下載:https://pan.baidu.com/s/1gbC5uhh_vjVbDk55_p7SOA 更多資料分享:http://blog.51cto.com/3215120 《Flask Web開發實戰:入門、進階與原理解析》PDF,帶目錄書籤,文字可以複製貼上;配套原始碼。 一本面向Python程式

Flask框架web開發零基礎入門

Flask框架是Python開發的一個基於Werkzeug和Jinja 2的web開發微框架,它的優勢就是極其簡潔,但又非常靈活,而且容易學習和應用。因此Flask框架是Python新手快速開始web開發最好的選擇,此外,使用Flask框架的另一個好處在於你可以非常輕鬆地將基於Python的機器學習演算法或資

Python web開發Flask的URL和檢視

URL與檢視 URL與函式的對映: 從之前的helloworld.py檔案中,我們已經看到,一個URL要與執行函式進行對映,使用的是@app.route裝飾器。@app.route裝飾器中,可以指定URL的規則來進行更加詳細的對映,比如現在要對映一個文章詳情的URL,文章詳情的URL

Python web開發Flask的專案配置

認識web url詳解: URL是Uniform Resource Locator的簡寫,統一資源定位符。 一個URL由以下幾部分組成: scheme://host:port/path/?query-string=xxx#anchor 1 scheme:代表的是訪問的協議,一