《Flask Web開發》書中的坑--持續更新

《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]=True

app.config[MAIL_USERNAME]=os.environ.get(MAIL_USERNAME)

app.config[MAIL_PASSWORD]=smtp.126.com(MAIL_PASSWORD)

3.啟動伺服器前,設定環境變數

export MAIL_USERNAME=haytham331 @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,db

from 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開發?

TAG:Flask | Python | Web開發 |