Blog 項目源碼:https://github.com/JmilkFan/JmilkFan-s-Bloghtml
用 Flask 來寫個輕博客 (1) — 建立項目 python
Flask 擴展git
該文件是整個 Flask 應用程序的配置文件,定義咱們經常使用的配置類 Config/ProdConfig/DevConfig 。github
class Config(object):
"""Base config class."""
pass
class ProdConfig(Config):
"""Production config class."""
pass
class DevConfig(Config):
"""Development config class."""
# Open the DEBUG
DEBUG = True
該文件是 Flask 應用的核心,也是程序的入口web
from flask import Flask
from config import DevConfig
app = Flask(__name__)
# Get the config from object of DecConfig
# 使用 onfig.from_object() 而不使用 app.config['DEBUG'] 是由於這樣能夠加載 class DevConfig 的配置變量集合,而不須要一項一項的添加和修改。
app.config.from_object(DevConfig)
# 指定 URL='/' 的路由規則
# 當訪問 HTTP://server_ip/ GET(Default) 時,call home()
@app.route('/')
def home():
return '<h1>Hello World!</h1>'
if __name__ == '__main__':
# Entry the application
app.run()
flask-script 是 Flask 的一個擴展,它可以建立指令,而且讓這些指令在 Flask 的應用上下文中執行,能夠達到修改 Flask 對象的目的。
除此以外,flask-script 還可以啓動 Flask 開發環境服務器,和開啓包含有應用上下文的 Python 指令行。shell
(env) [root@flask-dev JmilkFan-s-Blog]# pip install flask-script (env) [root@flask-dev JmilkFan-s-Blog]# pip freeze > requirements.txt
NOTE: 當咱們須要安裝一個支持 Flask 應用的軟件時,咱們都應該進入到 virtualenv 中,而且將新安裝的軟件記錄到 requirements.txt 文件中。flask
# import Flask Script object
from flask.ext.script import Manager, Server
import main
# Init manager object via app object
manager = Manager(main.app)
# Create a new commands: server
# This command will be run the Flask development_env server
manager.add_command("server", Server())
@manager.shell
def make_shell_context():
"""Create a python CLI. return: Default import object type: `Dict` """
# 確保有導入 Flask app object,不然啓動的 CLI 上下文中仍然沒有 app 對象
return dict(app=main.app)
if __name__ == '__main__':
manager.run()
NOTE: 經過 manager.py 來執行命令行是十分有必要的,由於一些 Flask 的擴展只有在 Flask app object 被建立以後纔會被初始化,因此很是依賴於應用上下文的環境,在沒有 Flask app object 時,直接運行默認的 Python CLI 會致使這些 Flask 擴展返回錯誤。瀏覽器
[root@flask-dev JmilkFan-s-Blog]# python manage.py server
/usr/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.script is deprecated, use flask_script instead.
.format(x=modname), ExtDeprecationWarning
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
/usr/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.script is deprecated, use flask_script instead.
.format(x=modname), ExtDeprecationWarning
* Debugger is active!
* Debugger pin code: 338-883-928
[root@flask-dev JmilkFan-s-Blog]# python manage.py shell
/usr/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.script is deprecated, use flask_script instead.
.format(x=modname), ExtDeprecationWarning
In [1]: app
Out[1]: <Flask 'main'>
In [2]: type(app)
Out[2]: flask.app.Flask # app 對象就是 class flask.app.Flask 的實例化對象