《Flask Web開發:基於Python的Web應用開發實戰》1day


《Flask Web開發:基於Python的Web應用開發實戰》

想跟着學一遍flask,做一個博客,重點是做網頁。希望,在之后的學習中,不要忘記重點以及不要放棄(還沒怎么堅持過)。

---題記

1. 安裝

1.1 准備

在pycharm中新建了flask虛擬環境之后默認加載的flask程序:

F1

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
   return 'Hello World!'


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

---->

image-20200224142424927

2.程序的基本結構

2.1初始化

image-20200224143243570

__name__是根目錄的名字?

2.2路由和視圖函數

路由

image-20200224143654224

image-20200224143801384

image-20200224143811655

視圖函數

image-20200224144334320

由上圖可以發現。

route里面的路由‘/’不必非要和下面的函數名字一致,也可。

之前,怎么寫成一樣,不一樣還不行的?

image-20200224144530880

image-20200224144628548

2.3啟動服務器

image-20200224144901605

2.4一個完整的程序

image-20200224144942773

image-20200224144958867

image-20200224145011457

image-20200224145045216

F2

image-20200224145104266

2.5請求-響應循環

image-20200224145240375

2.5.1程序和請求上下文

django程序寫法

image-20200224145441445

上下文中多個request

image-20200224150114489

程序和請求上下文image-20200224150757696

image-20200224150935770

2.5.2請求調度

image-20200225090600916

2.5.4請求鈎子

image-20200225094004676

2.5.4響應

image-20200225094900555

image-20200225100133536

控制權?web服務器

F2

from flask import redirect
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
   return redirect('https://www.baidu.com')
# if __name__=='__main__':
app.run(debug=True)
Warning1:

Silently ignoring app.run() because the application is run from the flask command line executable. Consider putting app.run() behind an if name == "main" guard to silence this warning. app.run(debug=True)

2.6Flask擴展

image-20200301111606891

社區里擴展不夠,去Python標准庫或代碼庫。

使用Flask-Script支持命令行選項

image-20200301113044528

安裝:

pip install flask-script

干啥的?

error1

ModuleNotFoundError: No module named 'flask.ext' 的解決方法

出現該問題主要原因是新版的flask拋棄了flask.ext這種引入擴展的方法,更改為 flask_擴展名
例如:
以前:from flask.ext.script import Manager
現在:from flask_script import Manager

F3

from flask_script import Manager
from flask import Flask
app = Flask(__name__)
manager = Manager(app)

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

解析命令行的功能?

image-20200301122853913

image-20200301130936180

image-20200301131805769

看了半圈,沒明白講的什么?

大概是支持在shell后面擴展端口或者程序的。

網上的資料: 通過使用Flask-Script擴展,我們可以在Flask服務器啟動的時候,通過命令行的方式傳入參數。而不僅僅通過app.run()方法中傳參,比如我們可以通過python hello.py runserver –host ip地址,告訴服務器在哪個網絡接口監聽來自客戶端的連接。默認情況下,服務器只監聽來自服務器所在計算機發起的連接,即localhost連接。 我們可以通過python hello.py runserver --help來查看參數。

Flask-Script插件為在Flask里編寫額外的腳本提供了支持。包括了一個開發服務器,一個定制的Python命令行,用於執行初始化數據庫、定時任務和其他屬於web應用之外的命令行任務的腳本

2.

Flask-Script還可以為當前應用添加腳本命令

"""自定義flask_script終端命令"""
from flask_script import Manager
from flask import Flask
app = Flask(__name__)
from flask_script import Command
manager = Manager(app)
class HelloCommand(Command):
   """命令的相關描述"""
   def run(self):
       with open("text.txt", "w") as f:
           f.write("hello\r\nhello")
           pass
       print("這是執行了hello命令")

manager.add_command('hello', HelloCommand())

鏈接:https://www.jianshu.com/p/a681f6490c3c

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM