《Flask Web開發》書中的坑--持續更新
09-19
《Flask Web開發》書中的坑--持續更新
1 人贊了文章
記錄一下學習《Flaks Web開發》這本書中踩到的坑,方便以後溫習,主要的坑有兩類:
1.從書中git拉下來的代碼跑不起來。 2.某些書中的模塊國內用不了前面也有很坑,主要是缺失腳本執行語句,還有拓展庫引用方式變化,後面再來補一下
if __name__ == __main__:app.run(debug=True)
第六章 電子郵件
書中的郵件伺服器選用了谷歌郵件伺服器,而國內是無法使用的,所以需要替換成國內的伺服器,我選用的事126伺服器 1.首先需要登陸郵箱-->設置-->客戶端授權密碼 在這裡打開授權,然後設置一個"授權密碼",這個授權碼很重要,是後面要 寫入環境變數的並不是126郵箱的登陸密碼,而是這個"授權密碼" 2.郵箱伺服器信息和埠都要相應變化 app.config[MAIL_SERVER]=smtp.126.com app.config[MAIL_PORT]=25 app.config[MAILUSETLS]=Trueapp.config[MAIL_USERNAME]=os.environ.get(MAIL_USERNAME)
app.config[MAIL_PASSWORD]=http://smtp.126.com(MAIL_PASSWORD) 3.啟動伺服器前,設定環境變數 export MAIL_USERNAME=haytham331 @http://126.com export MIAL_PASSWPRD=yourPassword #這裡要用"授權密碼" 備註:我使用的是mac,win用set代替export,此外重啟python虛擬機,有時會導致環境變數丟失,我還沒找到原因,有事第二天啟動虛擬機發現程序出錯可以看看是不是環境變數沒了(執行echo $MAIL_USERNAME)此外,書中示例6-3 hello.py中,有一個環境變數FLASKNY_MAIL_SENDER, 這裡後面的值是個我在本地運行會出錯的數值,建議也替換成: os.environ.get(FALSKY_ADMIN),替換後前3行代碼變成
from flask_mail import Message #這裡書中為flask.ext.mail 會出錯app.config[FLASKY_MAIL_SUBJECT_PREFIX] = [Flasky]
app.config[FLASKY_MAIL_SENDER] = os.environ.get(FALSKY_ADMIN)此處的FLASKY_ADMIN是後續需要設置的環境變數,內容為自己的郵箱
export FALSKY_ADMIN=haytham331@126.com第七章 大型程序的結構
本章拉下來的代碼都沒有manage.py文件,自己手動創建一個,按照實例7-8寫即可,後續git拉下來的分支大部分存在這個問題第十一章
關於自動創建假數據的forgerypy的使用,書中提供的11c版本存在比較大的問題 1.首先models.py裡面User和Post的兩個靜態方法都是沒有的,需要自己書寫進去 2.此外還需要去manage.py裡面,在import models時要增加導入Post,並且在shell命令的上下文中,加入Post,修改後變成: import os from app import create_app,dbfrom app.models import User,Role,Post
from flask_script import Manager, Shell from flask_migrate import Migrate,MigrateCommand app = create_app(os.getenv(FLASK_CONFIG) or default) manager = Manager(app) migrate = Migrate(app,db) def make_shell_context(): return dict(app=app, db=db, User=User, Role=Role, Post=Post) manager.add_command("shell",Shell(make_context=make_shell_context)) manager.add_command(db,MigrateCommand)if __name__ == __main__: manager.run()
markdowm test
- MARKWOWM test
推薦閱讀:
※使用GitHub-Flask實現GitHub登錄和API交互
※word.lcy.im
※flask+vue全棧開發實踐——1. 工程初始化
※Flask如何在不重新啟動的情況下,刷新修改過後的頁面內容
※為什麼我學了Django/Flask,還是不會做Web開發?