Flask學習日誌(五) - Flask擴充套件
文 / 秦未
眾所周知,Flask是自由的,它極易擴充套件,擁有非常多的第三方擴充套件包,這些第三方擴充套件包主要特點就是簡單,即學即用,這也是我們學習Flask的主要原因之一。
當我們想要實現某項功能之前,網上很有可能已經有別人寫好的外掛了,我們不需要重複造輪子,而更應該將時間花費在我們想要實現的功能上。
那麼這些第三方擴充套件包我們從哪裡獲取呢?
1.官方獲取擴充套件包
地址:http://flask.pocoo.org/extensions/
在這個網頁我們能獲取官方團隊驗證的第三方擴充套件包,並且也提供詳細的文件供我們查詢。
2.Pycharm獲取擴充套件包
我們也可以通過Pycharm獲取擴充套件包,按照下圖所示步驟去做,我們就可以下載安裝擴充套件包。
3.備份與恢復環境
我們如果安裝了這些擴充套件包,那麼我們如何在不同系統,不同環境中同樣也擁有相同版本的第三方擴充套件包(庫)呢?
這裡我們就利用一個pip的命令就可以了:
pip freeze > requirements.txt
恢復:
pip install -r requirements.txt
4.使用類似Django的manage管理工具
好的,現在我們需要一個管理工具,管理我們的專案:
pip install flask-script
當然在Pycharm中安裝也是很方便的。
接下來使用它,我們在app.py中匯入它:
from flask_script import Manager
# 這裡app已經例項化了
manager = Manager(app)
然後專案啟動那裡改成:
if __name__ == '__main__':
# app.run(debug=True)
manager.run()
為避免不清楚具體情況,我將所有程式碼貼出:
# /app/app.py
# -*- coding:utf-8 -*-
import datetime
from flask import Flask, render_template, request, redirect, url_for, make_response
from os import path
from flask_script import Manager
from werkzeug.routing import BaseConverter
from werkzeug.utils import secure_filename
class RegexConverter(BaseConverter):
def __init__(self, url_map, *items):
super(RegexConverter, self).__init__(url_map)
self.regex = items[0]
app = Flask(__name__)
app.url_map.converters['regex'] = RegexConverter
manager = Manager(app)
@app.route('/')
def index():
# 獲取cookies
# username = request.cookies.get('username')
# 封裝render_template
response = make_response(render_template('blog/index.html', **{
'text': 'Hello, World',
}))
# 設定cookies--引數1:名稱,引數2:值,expires指定過期時間;(記得匯入datetime模組!)
outdate = datetime.datetime.today() + datetime.timedelta(days=30)
response.set_cookie('username', 'admin', expires=outdate)
return response
@app.route('/about')
def about():
return '<h1>about</h1>'
@app.route('/user/<username>')
def user(username):
return F'<h1>{username}</h1>'
@app.route('/login/', methods=['GET', 'POST'])
def login():
# 判斷請求方式
if request.method == 'POST':
# POST方式時資料是在form裡面
username = request.form.get('username')
password = request.form.get('password')
# 獲取檔案
my_file = request.files.get('file')
# 獲取當前路徑
basepath = path.abspath(path.dirname(__file__))
# 將路徑連線
upload_path = path.join(basepath, 'static/uploads/')
# 儲存檔案並將檔名獲取封裝
my_file.save(upload_path + secure_filename(my_file.filename))
# 跳轉upload函式
return redirect(url_for('upload'))
else:
# GET方式時資料是在args裡面
username = request.args.get('username')
password = request.args.get('password')
return render_template('blog/login.html', method='GET')
@app.route('/upload')
def upload():
return '<h1>上傳成功!</h1>'
if __name__ == '__main__':
# app.run(debug=True)
manager.run()
終端中執行:
python app.py runserver
也可以在Pycharm中配置一下啟動命令:
在 run 選項的下拉箭頭,選擇 edit configure 選項,然後在 script parameters 裡新增 runserver 即可。
地址還是一樣的:http://127.0.0.1:5000
有時候我們還會遇到一個問題,就是如果我們修改一下程式碼就要手動重啟一次服務,那簡直太浪費我們的時間了,有這樣一個庫可以解決我們的問題,它叫livereload(可理解為即時重新整理),還是一樣的先安裝它:
pip install livereload
使用它的方法其實也很簡單,我們先在app.py中建立一個函式:
@manager.command
def dev():
# 匯入包
from livereload import Server
# 封裝
live_server = Server(app.wsgi_app)
# 設定監測檔案路徑
live_server.watch('**/*.*')
# 同時讓它重新整理
live_server.serve(open_url=True)
啟動它,終端輸入:
python app.py dev
這樣它就會預設監測專案檔案變動,並即時重新整理。
---end---
相關文章
- Flask 自建擴充套件Flask套件
- Flask-WTF進階和WTForms擴充套件FlaskORM套件
- Flask框架從入門到精通之擴充套件指令碼(十五)Flask框架套件指令碼
- [擴充套件包]-Laravel檢視日誌套件Laravel
- flask學習(一)Flask
- flask學習1Flask
- flask學習2Flask
- 日誌服務CLIETL-擴充套件UDF套件
- Flask擴充套件包安裝出現錯誤:Could not find a version that satisfies the requirement ...Flask套件UIREM
- Flask學習筆記Flask筆記
- ASP.NET擴充套件庫之Http日誌ASP.NET套件HTTP
- PHP日誌擴充套件SeasLog - 高效輕量PHP套件
- 學Flask框架有什麼用?為什麼學習Flask?Flask框架
- sql中的擴充套件學習SQL套件
- python-flask學習PythonFlask
- Flask學習資源整理Flask
- ES6學習 第五章 正則的擴充套件套件
- 學習筆記----擴充套件歐幾里德筆記套件
- Flask五之表單Flask
- Flask學習之旅--資料庫Flask資料庫
- CTF-flask模板注入學習Flask
- flask學習筆記之blueprintFlask筆記
- 五、談擴充套件方法的理解套件
- Laravel深入學習7 – 框架的擴充套件Laravel框架套件
- 高擴充套件性的學習路線套件
- C#學習筆記(補充)——擴充套件方法、事件C#筆記套件事件
- Flask Web開發學習之“HelloWorld”FlaskWeb
- Flask學習筆記(安裝篇)Flask筆記
- 基於Thinkphp5的日誌線上瀏覽擴充套件包PHP套件
- 五個檢視擴充套件類 LL套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- PHP的Mhash擴充套件函式的學習PHP套件函式
- 學習PHP中YAML操作擴充套件的使用PHPYAML套件
- es6陣列擴充套件的學習陣列套件
- 從EventBus學習擴充套件Weex事件機制套件事件
- swift學習筆記4——擴充套件、協議Swift筆記套件協議
- Swift學習筆記(二十六)——擴充套件Swift筆記套件
- Scikit-learn可擴充套件學習簡介套件