成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

flask-admin 快速打造博客 系列一

李世贊 / 1644人閱讀

摘要:前言我想分享快速打造博客的詳細(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í)想弄一個講堂的視頻教程,可是沒有足夠好的設(shè)備,而且錄制視頻更像是在表演,感覺一下子適應(yīng)不過來。可我還是錄了一套視頻效果不是很好,稍后想分享給大家。

1,準(zhǔn)備知識

Flask-admin是基于flask框架的,所以你必須先對flask有一個整體的認(rèn)識和學(xué)習(xí),至少需要知道怎么使用請求,模板響應(yīng),數(shù)據(jù)庫使用等等。
1)route 請求的路由規(guī)則
2)sqlalchemy 或者其他數(shù)據(jù)框架的增刪改
3)jinja2框架 模板響應(yīng)的使用

2,依賴庫,工具的安裝

python 3.6+版本以上,具體的依賴都放在requirements.txt里面,通過pip3進(jìn)行安裝即可
使用pycharm工具,可以直接官網(wǎng)下載
Pycharm非常簡單易用,但需要注冊碼,直接百度搜索:pycharm注冊碼2017
然后選擇一個注冊碼,就可以激活;或者輸入激活的url路徑也可以

3,搭建flask web

1)我們來搭建一個flask的使用框架,如果還沒有入門的同學(xué),可以借此入一下門。
新建一個項(xiàng)目:file->new project…..

在控制臺輸入:python cleanblog.py 啟動服務(wù)

2)目錄結(jié)構(gòu)改造
首先,我們建立apps的python包,在apps里面在建一個blog的python包,這樣設(shè)置的目的就是把所以功能模塊都放在apps下面;
其次,把static和template目錄拉到apps目錄下;
在根目錄,增加config.py 是配置文件,用于配置環(huán)境變量的
gendb.py是基于flask-sqlalchemy來生成數(shù)據(jù)庫表的

3)整合改造

3.1 整合blueprint
藍(lán)圖相當(dāng)于命名空間,前端路由過來的請求就會被藍(lán)圖的地址多映射到不同的處理函數(shù)上去。
在blog目錄下的__init__.py 文件輸入:

from flask import Blueprint
blog = Blueprint("main", __name__)
from . import views

然后再apps的__init__.py里注冊藍(lán)圖:

# 藍(lán)圖
from .blog import blog as main_blueprint
app.register_blueprint(main_blueprint)

其實(shí)藍(lán)圖的注冊是 app.register_blueprint(main_blueprint, url_prefix="/XXXX")
這里的XXXX是請求到該模塊下的路徑前綴。
弄個測試?yán)樱?br>blog 目錄下的views.py有個函數(shù):

# coding:utf-8
#views.py
from . import blog

@blog.route("/baseinfo",methods=["GET"])
def getbaseinfo():
    return "zhe是 測試頁面"

那么請求路徑就是 www.mxxx.com/XXXX/baseinfo

3.2 國際化
國際化使用的babelx,一個比較老的庫,不是很理想,如果自定義后臺頁面也許就不需要這么一個庫;而且現(xiàn)在babelx的版本要跟flask對得上,不然會有各種異常的
需要在config.py 配置:
BABEL_DEFAULT_LOCALE = "zh_hans_CN"
然后在apps的__init__.py里注冊:

#國際化
from flask_babelex import Babel
babel = Babel(app)

3.3 本地日期渲染
使用flask_moment 來渲染模板的日期,需要注冊到app:
moment.init_app(app)

然后再模板就可以使用:

{% block scripts %}
    {{ super() }}
    {{ moment.include_moment() }}  //在前端中通過方法引用moment.js文件
    {{ moment.locale("zh-cn") }}  //將moment.js本地化,否則渲染出來的時間日期都是英文的
{% endblock %}

{% block page_content %}
    {{ super() }}
    

Time now is {{ moment(current_time).format("LLL") }}


{% endblock %}

可參考:https://www.cnblogs.com/frank...

4.5 整合sqlalchemy
這是我們的一個重點(diǎn):
第一步:注冊:
db = SQLAlchemy()
然后注冊到app里:
db.init_app(app)
第二步:定義model
在apps目錄建立一個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ù)庫表腳本的,可以不用,你直接去數(shù)據(jù)庫生成也可以的

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í)這個文件是可以通過,然后直接在cmd控制臺輸入:
Python gendb.py db init (僅第一次使用的時候需要,生成migrations的目錄包)
python gendb.py db migrate (生成數(shù)據(jù)表)
python gendb.py db upgrade (同步到數(shù)據(jù)庫)

第一版就先搭建到這里,接下來我們進(jìn)入整合flask-admin

github地址 :https://github.com/minsons/xi...
另外,微信也可以打開我的免費(fèi)視頻,效果不怎么樣,其實(shí)看我文檔也夠了:

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/41302.html

相關(guān)文章

  • Oracle APEX 系列文章2:在阿里云上打造屬于你自己的APEX完整開發(fā)環(huán)境 (準(zhǔn)備工作)

    摘要:本系列文章使用的是阿里云的云服務(wù)器,僅僅是因?yàn)樵趪鴥?nèi)用阿里云的人比較多而已。在這里我們采用將單獨(dú)部署到上運(yùn)行的方式完成安裝,這也是比較推薦的方式。 本文是鋼哥的Oracle APEX系列文章中的其中一篇,完整 Oracle APEX 系列文章如下: Oracle APEX 系列文章1:Oracle APEX, 讓你秒變?nèi)珬i_發(fā)的黑科技 Oracle APEX 系列文章2:在阿里云上打...

    MAX_zuo 評論0 收藏0
  • Oracle APEX 系列文章2:在阿里云上打造屬于你自己的APEX完整開發(fā)環(huán)境 (準(zhǔn)備工作)

    摘要:本系列文章使用的是阿里云的云服務(wù)器,僅僅是因?yàn)樵趪鴥?nèi)用阿里云的人比較多而已。在這里我們采用將單獨(dú)部署到上運(yùn)行的方式完成安裝,這也是比較推薦的方式。 本文是鋼哥的Oracle APEX系列文章中的其中一篇,完整 Oracle APEX 系列文章如下: Oracle APEX 系列文章1:Oracle APEX, 讓你秒變?nèi)珬i_發(fā)的黑科技 Oracle APEX 系列文章2:在阿里云上打...

    xioqua 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<