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

從0開始使用python flask編寫博客網站(2)

primary table 分享 init code migrate 一個 文件中 gist

好了上一篇文章中搭建好了完整的框架,以及可以訪問一個“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可以輕易的換數據庫而不需要改變代碼。但是它對於復雜的查詢與插入到底是提高效率還是降低效率呢。自動化程度高以後,對於數據庫底層是否還有必要了解?

從0開始使用python flask編寫博客網站(2)