初入Flask學(xué)習(xí),遇到各種問題,還是得解決。
一般情況,我的編程學(xué)習(xí)思路是:
1.先學(xué)基礎(chǔ),能會寫,能看懂;
2.學(xué)會部署,直接看效果,自己寫的,直接就能看,爽;
基礎(chǔ)知識就不說了,這個靠學(xué),練,記,從而生巧。
今天說說我的程序在新浪云上的部署。<br />
先上碗好茶:<a style = "color:red">SAE官方Python部署Doc</a>。
這里面建議大家看看,好好研讀。
創(chuàng)建Flask應(yīng)用和創(chuàng)建SAE應(yīng)用我就不多說了,搜索一大片,說的都很好,很細(xì)。下面開始:
應(yīng)用層級關(guān)系:
- project
- config.py
- app
- views.py
- forms.py
- static
- css
- js
- templates
- vendor
- index.wsgi
- config.yaml
解釋一下:
- <a>project:</a>整個項目的根目錄,比如一般可以與SAE上創(chuàng)建好的App二級域名一樣。
- <a>config.py:</a>整個Flask應(yīng)用的配置文件。
- <a>project:</a>Flask核心目錄,存放開發(fā)文件。
- <a>views.py:</a>
- <a> forms.py:</a>
- <a> static</a>存放靜態(tài)文件。
- <a> static</a>存放模版文件。
- <a> index.wsgi </a>自己添加,SAE用來啟動上傳的Flask應(yīng)用。
import sae
sae.add_vendor_dir('vendor')
from app import app
application = sae.create_wsgi_app(app)
- <a> config.yaml </a>應(yīng)用的信息,Library等。
name: run
version: 1
cron:
- description: cron_test
url: /index.wsgi
schedule: "*/30 * * * *"
- <a> vendor </a>這個文件夾存放的是Flask應(yīng)用依賴的第三方Python包,如:Flask-WTF等。
SAE自帶的Flask庫并不一定滿足用戶需求,所以新浪給出了這個方案,允許用戶導(dǎo)入自己的第三方庫,<a herf = "http://www.sinacloud.com/doc/sae/python/tools.html#tian-jia-di-san-fang-yi-lai-bao" style = "color:red">SAE添加第三方依賴包</a>。
除了使用新浪云上已經(jīng)預(yù)裝的模塊之外,您還可以通過以下方式給自己的應(yīng)用添加第三方依賴包。
首先,在應(yīng)用的根目錄下創(chuàng)建一個第三方依賴包目錄 vendor
。
$ mkdir vendor
調(diào)用 pip
命令安裝依賴包,使用其 -t
選項指定第三方包的安裝目錄。
$ pip install -t vendor PACKAGE ...
將 vendor
目錄和應(yīng)用的代碼一起提交,即可在應(yīng)用代碼里使用安裝的第三方依賴包了。
注解
需要 pip 6.0.0 或者更高版本。
如果依賴包安裝的目錄名不為 vendor
,你需要在 index.wsgi
文件的最開始,添加以下代碼,將目錄加入到 sys.path 中。
import saesae.add_vendor_dir('路徑')# 注意:以上代碼得放在 index.wsgi 的最前面,所有其它代碼之前。
sae.
add_vendor_dir
(*dir*)[](http://www.sinacloud.com/doc/sae/python/tools.html#sae.add_vendor_dir)
將 site 目錄或者 virtualenv 目錄加入到 sys.path 中
參數(shù):
**dir** – site 目錄或者 virtualenv 目錄的相對路徑(相對于應(yīng)用的根目錄)
另外,project/app/init.py:
#-*- coding:utf-8 -*-
from flask import Flask
app = Flask(__name__)
app.debug = True
# 讀取配置
app.config.from_object('config')
from app import views
然后,沒問題的話,就可以上傳了。
當(dāng)然,開發(fā)過程中,我們可以使用本地搭建SAE環(huán)境測試。