用 Flask 來寫個輕博客 (2) — Hello World!

Blog 項目源碼:https://github.com/JmilkFan/JmilkFan-s-Bloghtml

目錄

前文列表

用 Flask 來寫個輕博客 (1) — 建立項目 python

擴展閱讀

Flask 擴展git

實現最簡單的 Flask 應用

建立 config.py 文件

該文件是整個 Flask 應用程序的配置文件,定義咱們經常使用的配置類 Config/ProdConfig/DevConfiggithub

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

建立 main.py 文件

該文件是 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-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

建立 manage.py 文件

# 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 擴展返回錯誤。瀏覽器

使用 manage 來運行開發環境服務器

[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

確保 manage 的上下本中導入了 app 對象

[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  的實例化對象

使用瀏覽器來訪問 Flask 應用

這裏寫圖片描述

相關文章
相關標籤/搜索