1. 程式人生 > >flask(三)專案管理器Manager/傳遞引數/優化專案程式碼結構

flask(三)專案管理器Manager/傳遞引數/優化專案程式碼結構

一. 專案檔案樹如下
這裡寫圖片描述

1.建立工具類包 utils, 並在裡面建立__init__.py檔案用於存放初始化app的函式
__init__.py檔案設定如下:
import os

from flask import Flask
from App.views import blue

def create_app():

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    templates_dir = os.path.join(BASE_DIR, 'templates')
    static_dir = os.path.join(BASE_DIR, 'static'
) app = Flask(__name__, static_folder=static_dir, template_folder=templates_dir) app.register_blueprint(blueprint=blue, url_prefix='/hello') # 將app交由blue管理 return app
在manage.py檔案中建立啟動檔案方式並使用專案管理器進行管理app,設定程式碼如下:
from flask_script import Manager
from utils import create_app

# 初始化,__name__代表主模組名或者包
app = create_app() manager = Manager(app=app) if __name__ == '__main__': manager.run()
在工程專案App下的views.py為檢視模組,設定如下:
import uuid

from flask import render_template, request, make_response, redirect, url_for, abort
from flask import Blueprint


blue = Blueprint('first', __name__)


# 主要用來處理業務邏輯, 以下函式為傳遞的各種引數型別與傳遞方式!
@blue.route('/', methods=['GET', 'POST']) def hello(): # 檢視函式 return 'Hello World' @blue.route('/hello/<name>') def hello_man(name): print(name) print(type(name)) return 'hello name:%s type:%s ' % (name, type(name)) @blue.route('/helloint/<int:id>') def hello_int(id): print(id) print(type(id)) a = 'wanghaifei' return 'hello int:%s' % (id) @blue.route('/getfloat/<float:price>') def hello_float(price): return 'float:%s' % price @blue.route('/getstr/<string:name>') def hello_name(name): return 'string:%s' % name @blue.route('/getpath/<path:url_path>') # 與string的區別是可以匹配到'/', 也是當做字串返回, 而string則不行 def hello_path(url_path): return 'url_path:%s' % url_path @blue.route('/getuuid/') #必須加兩個斜槓 def hello_get_uuid(): a = uuid.uuid4() return str(a) @blue.route('/getbyuuid/<uuid:uuid>') #必須加兩個斜槓 def hello_getby_uuid(uuid): return 'uu:%s' % uuid
啟動專案檔案方式: -d指的是開啟debug模式
python manage.py runserver -h 0.0.0.0 -p 8000 -d

建立static 與 templates 靜態資料夾, 結構如下:

這裡寫圖片描述

views.py檔案跳轉靜態檔案方式如下:
@blue.route(r'/index/')
def index():
    # return send_file('../templates/hello.html')
    return render_template('hello.html')


@blue.route('/getrequest/', methods=['GET', 'POST'])
def get_request():
    if request.method == 'GET':
        agrs = request.args
    elif request.method == 'POST':
        form = request.form

    return '獲取request'

@blue.route('/makeresponse/')
def get_response():

    temp = render_template('hello.html')
    # response = make_response('<h2>羞羞噠</h2>')
    response = make_response(temp, 404)#後面的250是可以自己定義返回的狀態碼

    return response

@blue.route('/redirect/')
def make_redirect():
    # 第一種方法
    # return redirect('/hello/index/')
    # 第二種方法, 跳轉到first藍圖下的index路由下
    return redirect(url_for('first.index'))
異常終止使用函式abort
@blue.route('/makeabort/')
def make_abort():
    abort(404)   # 終止,丟擲404錯誤
    return '終結'

@blue.errorhandler(404)
def get_error(exception):

    return '捕捉異常:%s' % exception

相關推薦

flask()專案管理Manager/傳遞引數/優化專案程式碼結構

一. 專案檔案樹如下 1.建立工具類包 utils, 並在裡面建立__init__.py檔案用於存放初始化app的函式 __init__.py檔案設定如下: import os from flask import Flask from App.v

Taiga專案管理安裝手冊

Taiga是一種專案管理器,網路上關於taiga的安裝部署資料特別少,本人在安裝taiga過程中也碰了不少壁,為方便大家安裝taiga,我自己寫了份安裝手冊如下: (原文是用txt檔案寫的,放在論壇上可能不太好看) 官方安裝手冊(英文):http://taigaio.github.io/taiga

Android ,MVP+retrofit +rxjava+glide recyclerview使用詳解 ,條目點選 長按點選,管理 ,分割線

首先是對應的依賴  implementation 'com.android.support:recyclerview-v7:26.1.0' 下面是對應的介面卡 裡面對應的 有點選的註釋 public class HomeAdaper extends RecyclerV

maven專案管理,Junit測試單元以及C3P0資料庫連線池的會用總結

最近剛好連續學習了maven專案管理器,Junit測試單元以及C3P0資料庫連線池的使用,現將學習工程中遇到的問題與注意點總結如下: 1.maven專案管理器 maven是一種很好用的專案管理器,在開發工具中建立一個maven專案,它會自動生成各種目錄,有專門存放java

jmeter Http cookie 管理初識 傳遞登入狀態至後面介面

    Http cookie管理器初次使用一般使用在同一個域名下,主要用來傳遞狀態。例如訪問登入介面後,需把登入狀態穿遞給後面介面使用,本次使用就基於此場景: 1.建立執行緒組 2.新增http cookie 預設無需改變 3.新增Http請求 4.新增結果樹

ionic專案中跨頁面傳遞引數的幾種方式

1、使用angularjs自帶的$cacheFactory服務 $cacheFactory 從字面直譯即為快取工廠,可以用它來生成快取物件,快取物件以key-value的方式進行資料的儲存,在整個應用

Django中自定義模型管理(Manager)及方法

1.自定義管理器(Manager) 在語句Book.objects.all()中,objects是一個特殊的屬性,通過它來查詢資料庫,它就是模型的一個Manager.每個Django模型至少有一個manager,你可以建立自定義manager以定製資料庫的訪問.這裡有兩個方法建立自定義manager:新增額

專案管理必知項,做專案經理必須知道的幾個事情

一直覺得我們公司的專案管理比較奇葩,現在學習pmp之後發現原來如此。不是公司奇葩,是我自己水平不夠誤解公司了。 做專案經理,必須知道的幾個事情。看了PMP看了他講了很多,結合自己的實踐經驗,總結一下。 都說專案就是一個坑,專案經理就是坑主。能不能合格的把坑填上填好,完全是

【Git專案管理】分散式 Git - 向一個專案貢獻

分散式 Git - 向一個專案貢獻 向一個專案貢獻 描述如何向一個專案貢獻的主要困難在於完成貢獻有很多不同的方式。 因為 Git 非常靈活,人們可以通過不同的方式來一起工作,所以描述應該如何貢獻並不是非常準確 - 每一個專案都有一點兒不同。 影響因素包括活躍貢獻者的數量、選擇的工作流程、提

作為專案經理,你真的瞭解專案管理認證的行情嗎?專案管理體系起底調研

小蠻作為一個PM(專案經理,非產品經理),平時工作上一直跟專案管理打交道,深知專案管理的重要性。為了拓寬視野,融入群體,小蠻在2017年自掏腰包通過了PMP認證,以為認證結束,咱們一切就OK了,誰知這

VS專案屬性頁 Property page 與屬性管理 Property manager 中配置關係

在新建工程時,總是會有配置路徑、連結庫、生成目標等問題,這可以通過修改專案屬性配置來達到目的。 VS 中在一個專案上我們可以通過專案的屬性頁(Project Property page)來修改專案相關屬性,也可以通過修改屬性管理器(Property Manager)中的相關

邏輯卷管理 (Logical Volume Manager) 之

LVM 的系統快照快照就是將當時的系統資訊記錄下來,就好像照相記錄一般! 未來若有任何資料更動了,則原始資料會被搬移到快照區,沒有被更動的區域則由快照區與檔案系統共享。 用講的好像很難懂,我們用圖解說明一下好了: 左圖為最初建置系統快照區的狀況,LVM 會預留一個區域 (

【轉】JMeter學習(二十五)HTTP屬性管理HTTP Cookie Manager、HTTP Request Defaults

agen 讀取 expired fault 範圍 運行時 ear 定制 只有一個 Test Plan的配置元件中有一些和HTTP屬性相關的元件:HTTP Cache Manager、HTTP Authorization Manager、HTTP Cookie Manager

Notepad++沒有插件管理(Plugin Manager)的解決方法

http 內容 1.4 down 很多 files imp pad 沒有   最近想在Notepad++中裝一個插件的時候才發現Notepad++中竟然沒有plugin manager,網上找了很久,試了很多方法都不奏效,唯獨這個方法有效,現在問題已解決,方法貼下來,免得以

Expression Blend實例中文教程(11) - 視覺管理快速入門Visual State Manager(VSM)

條件 creat 通過 too 自動變 nor 步驟 打開 學習 Visual State Manager,中文又稱視覺狀態管理器(簡稱為VSM),是Silverlight 2中引進的一個概念。通過使用VSM,開發人員和設計人員可以輕松的改變項目控件的視覺效果,在項目中VS

Android原始碼解析之應用程式資源管理(Asset Manager)的建立過程分析

轉載自:https://blog.csdn.net/luoshengyang/article/details/8791064 我們分析了Android應用程式資源的編譯和打包過程,最終得到的應用程式資源就與應用程式程式碼一起打包在一個APK檔案中。Android應用程式在執行的過程中,是通過一個

maven課程 專案管理利器-maven 3-8 maven依賴傳遞 4星

本節主要講了 1  maven依賴傳遞 2  maven排除依賴 3  零散知識點   1  maven依賴傳遞   2  maven排除依賴 3  零散知識點  a  eclipse中pom.xml右鍵run as兩個build,他們的區別 無快捷鍵的bui

Android 專案實戰:應用管理Ⅰ(資料)

瞭解應用管理器的專案概況和功能需求 (從資料開始做) 掌握PackageManager的用法 掌握PackageInfo的常用屬性 掌握Application的常用屬性和方法 學會實體類的編寫(工具類) 完成專案的建立和資料測試 &nb

struts2傳遞引數種方式

作用:每次訪問struts2的任何一個action方法時,若該方法裡面需要物件的值,完全可以用struts2傳遞引數的三種方式: struts2傳遞引數的三種方式 在傳統的servlet中我們採用request和response傳遞引數,但是struts2如果想用同樣的

Qt入門 佈局管理layout(

佈局layout 在Qt中,為了實現特定的功能,一般情況下我們會使用的是自己定義的視窗類。 官方提供了Qt Create來編輯的ui檔案,但是我不會使用操作編輯之後的ui,所以這裡介紹如何定義自己的佈局。 在QWidget中設定佈局 Qxxlayout類 若要佈局的視窗