摘要:前言我想分享快速打造博客的詳細(xì)教程,可是發(fā)現(xiàn)網(wǎng)易課堂已經(jīng)有相應(yīng)的免費(fèi)課堂了,所以就不打算一點(diǎn)一滴的在這里做筆記,分享這些東西了。所以我主要集中在使用上的講解。可我還是錄了一套視頻效果不是很好,稍后想分享給大家。
前言:
我想分享flask+flask-admin快速打造博客的詳細(xì)教程,可是發(fā)現(xiàn)網(wǎng)易課堂已經(jīng)有相應(yīng)的免費(fèi)課堂了,所以就不打算一點(diǎn)一滴的在這里做筆記,分享這些東西了。所以我主要集中在flask-admin使用上的講解。如果有需要flask可以去參考一下網(wǎng)易的flask課程,其實(shí)想弄一個(gè)講堂的視頻教程,可是沒有足夠好的設(shè)備,而且錄制視頻更像是在表演,感覺一下子適應(yīng)不過來。可我還是錄了一套視頻效果不是很好,稍后想分享給大家。
1,準(zhǔn)備知識(shí)Flask-admin是基于flask框架的,所以你必須先對(duì)flask有一個(gè)整體的認(rèn)識(shí)和學(xué)習(xí),至少需要知道怎么使用請(qǐng)求,模板響應(yīng),數(shù)據(jù)庫(kù)使用等等。
1)route 請(qǐng)求的路由規(guī)則
2)sqlalchemy 或者其他數(shù)據(jù)框架的增刪改
3)jinja2框架 模板響應(yīng)的使用
python 3.6+版本以上,具體的依賴都放在requirements.txt里面,通過pip3進(jìn)行安裝即可
使用pycharm工具,可以直接官網(wǎng)下載
Pycharm非常簡(jiǎn)單易用,但需要注冊(cè)碼,直接百度搜索:pycharm注冊(cè)碼2017
然后選擇一個(gè)注冊(cè)碼,就可以激活;或者輸入激活的url路徑也可以
1)我們來搭建一個(gè)flask的使用框架,如果還沒有入門的同學(xué),可以借此入一下門。
新建一個(gè)項(xiàng)目:file->new project…..
在控制臺(tái)輸入:python cleanblog.py 啟動(dòng)服務(wù)
2)目錄結(jié)構(gòu)改造
首先,我們建立apps的python包,在apps里面在建一個(gè)blog的python包,這樣設(shè)置的目的就是把所以功能模塊都放在apps下面;
其次,把static和template目錄拉到apps目錄下;
在根目錄,增加config.py 是配置文件,用于配置環(huán)境變量的
gendb.py是基于flask-sqlalchemy來生成數(shù)據(jù)庫(kù)表的
3)整合改造
3.1 整合blueprint
藍(lán)圖相當(dāng)于命名空間,前端路由過來的請(qǐng)求就會(huì)被藍(lán)圖的地址多映射到不同的處理函數(shù)上去。
在blog目錄下的__init__.py 文件輸入:
from flask import Blueprint blog = Blueprint("main", __name__) from . import views
然后再apps的__init__.py里注冊(cè)藍(lán)圖:
# 藍(lán)圖 from .blog import blog as main_blueprint app.register_blueprint(main_blueprint)
其實(shí)藍(lán)圖的注冊(cè)是 app.register_blueprint(main_blueprint, url_prefix="/XXXX")
這里的XXXX是請(qǐng)求到該模塊下的路徑前綴。
弄個(gè)測(cè)試?yán)樱?br>blog 目錄下的views.py有個(gè)函數(shù):
# coding:utf-8 #views.py from . import blog @blog.route("/baseinfo",methods=["GET"]) def getbaseinfo(): return "zhe是 測(cè)試頁(yè)面"
那么請(qǐng)求路徑就是 www.mxxx.com/XXXX/baseinfo
3.2 國(guó)際化
國(guó)際化使用的babelx,一個(gè)比較老的庫(kù),不是很理想,如果自定義后臺(tái)頁(yè)面也許就不需要這么一個(gè)庫(kù);而且現(xiàn)在babelx的版本要跟flask對(duì)得上,不然會(huì)有各種異常的
需要在config.py 配置:
BABEL_DEFAULT_LOCALE = "zh_hans_CN"
然后在apps的__init__.py里注冊(cè):
#國(guó)際化 from flask_babelex import Babel babel = Babel(app)
3.3 本地日期渲染
使用flask_moment 來渲染模板的日期,需要注冊(cè)到app:
moment.init_app(app)
然后再模板就可以使用:
{% block scripts %} {{ super() }} {{ moment.include_moment() }} //在前端中通過方法引用moment.js文件 {{ moment.locale("zh-cn") }} //將moment.js本地化,否則渲染出來的時(shí)間日期都是英文的 {% endblock %} {% block page_content %} {{ super() }}Time now is {{ moment(current_time).format("LLL") }}
{% endblock %}
可參考:https://www.cnblogs.com/frank...
4.5 整合sqlalchemy
這是我們的一個(gè)重點(diǎn):
第一步:注冊(cè):
db = SQLAlchemy()
然后注冊(cè)到app里:
db.init_app(app)
第二步:定義model
在apps目錄建立一個(gè)models.py文件,就可以在里面定義模型了:
#coding: utf-8 import hashlib from datetime import datetime from . import db #用戶表 class User(db.Model): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(64), unique=True, nullable=False) username = db.Column(db.String(64), unique=True, nullable=False) role = db.Column(db.String(64), nullable=True) password_hash = db.Column(db.String(128)) head_img = db.Column(db.String(128), unique=False, nullable=True) create_time = db.Column(db.DateTime, nullable=True,default=datetime.now) def verity_password(originPassword, password): from apps.util import common newpassword = common.md5(originPassword) return password == newpassword def __repr__(self): return "" % self.username
第三步:生成表
gendb.py 主要是生成數(shù)據(jù)庫(kù)表腳本的,可以不用,你直接去數(shù)據(jù)庫(kù)生成也可以的
from flask_script import Manager from flask_migrate import Migrate, MigrateCommand from apps import create_app #app.config.from_object("app.config") # configuration # SQLALCHEMY_DATABASE_URI = "mysql://root:123456@117.48.202.102/flaskAdmin" # app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI # app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True app = create_app("config.py") from apps.models import db #db.init_app(app) migrate = Migrate(app,db) manager = Manager(app) manager.add_command("db",MigrateCommand) if __name__ == "__main__": manager.run() """ python gendb.py db init python gendb.py db migrate python gendb.py db upgrade """
其實(shí)這個(gè)文件是可以通過,然后直接在cmd控制臺(tái)輸入:
Python gendb.py db init (僅第一次使用的時(shí)候需要,生成migrations的目錄包)
python gendb.py db migrate (生成數(shù)據(jù)表)
python gendb.py db upgrade (同步到數(shù)據(jù)庫(kù))
第一版就先搭建到這里,接下來我們進(jìn)入整合flask-admin
github地址 :https://github.com/minsons/xi...
另外,微信也可以打開我的免費(fèi)視頻,效果不怎么樣,其實(shí)看我文檔也夠了:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/41302.html
摘要:本系列文章使用的是阿里云的云服務(wù)器,僅僅是因?yàn)樵趪?guó)內(nèi)用阿里云的人比較多而已。在這里我們采用將單獨(dú)部署到上運(yùn)行的方式完成安裝,這也是比較推薦的方式。 本文是鋼哥的Oracle APEX系列文章中的其中一篇,完整 Oracle APEX 系列文章如下: Oracle APEX 系列文章1:Oracle APEX, 讓你秒變?nèi)珬i_發(fā)的黑科技 Oracle APEX 系列文章2:在阿里云上打...
摘要:本系列文章使用的是阿里云的云服務(wù)器,僅僅是因?yàn)樵趪?guó)內(nèi)用阿里云的人比較多而已。在這里我們采用將單獨(dú)部署到上運(yùn)行的方式完成安裝,這也是比較推薦的方式。 本文是鋼哥的Oracle APEX系列文章中的其中一篇,完整 Oracle APEX 系列文章如下: Oracle APEX 系列文章1:Oracle APEX, 讓你秒變?nèi)珬i_發(fā)的黑科技 Oracle APEX 系列文章2:在阿里云上打...
閱讀 2067·2021-11-11 16:55
閱讀 1401·2021-09-28 09:36
閱讀 1047·2019-08-29 15:21
閱讀 1578·2019-08-29 14:10
閱讀 2764·2019-08-29 14:08
閱讀 1638·2019-08-29 12:31
閱讀 3251·2019-08-29 12:31
閱讀 983·2019-08-26 16:47