從0開始使用python flask編寫博客網站(2)
阿新 • • 發佈:2018-10-22
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)