1. 程式人生 > >從0開始使用python flask編寫部落格網站(2)

從0開始使用python flask編寫部落格網站(2)

好了上一篇文章中搭建好了完整的框架,以及可以訪問一個“hello world”頁面了。現在繼續完善我們的部落格程式。

1.如法炮製,繼續完善error和admin的路由。

首先寫把404和500的網頁寫好放到templates/errors中。然後在error的資料夾中新建handlers.py 檔案,在這裡寫錯誤的路由

from flask import render_template
from app.errors import bp

@bp.app_errorhandler(404)
def not_found_error(error):
    return render_template("errors/404.html"), 404

@bp.app_errorhandler(500)
def internal_error(error):
    return render_template("errors/500.html"), 500

隨後和主頁面一樣,在error的__init__.py檔案匯入藍圖和路由

from flask import Blueprint

bp = Blueprint("errors", __name__)

from app.errors import handlers

最後在creat_app()中繫結藍圖

    from app.errors import bp as errors_bp
    app.register_blueprint(errors_bp)

admin目錄也同主頁面目錄一樣的增加藍圖同時在creat_app()函式中繫結藍圖

2.設計資料庫

一個部落格需要記錄什麼資料呢?id要有個吧,還有標題,內容,文章的時間,閱讀的次數。還有文章的標籤。
首先在app目錄下新建models.py

from app import db
from datetime import datetime

class Page(db.Model):
    _tablename_ = "pages"
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(20))
    body = db.Column(db.Text)
    timestamp = db.Column(db.DataTime, index=True, default=datetime.utcnow)
    view_num = db.Column(db.Integer, default=0)

    def __repr(self):
        return "<Page {}>".format(self.title)

其次在app/__init_.py檔案中引入model檔案

from app import models

最後遷移資料庫
```
flask db init

flask db migrate

flask db upgrade
```
不出意外的話會新建一個page表。

##總結
使用orm可以輕易的換資料庫而不需要改變程式碼。但是它對於複雜的查詢與插入到底是提高效率還是降低效率呢。自動化程度高以後,對於資料庫底層是否還有必要了解?