在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    Flask博客實戰(zhàn) – 創(chuàng)建用戶相關應用

    Flask博客實戰(zhàn) - 創(chuàng)建用戶相關應用

    在前幾個章節(jié)我們已經(jīng)詳細地說了創(chuàng)建視圖及url的方式,也熟悉了基本的增刪改查方法,那么我們就可以利用之前所學的知識來實現(xiàn)用戶相關應用,并構(gòu)造好基本的登錄注冊功能視圖!

    最開始我們創(chuàng)建目錄的時候就在app文件夾下預留了一個auth的文件夾,相關登錄注冊以及用戶相關的數(shù)據(jù)及視圖模板都放到這個文件夾下邊

    創(chuàng)建用戶相關應用

    在app/auth/目錄下參照blog目錄創(chuàng)建相關文件,這次我們將models和views放到文件夾中,使其成為一個塊

    1、創(chuàng)建一個models的文件夾并在其內(nèi)部創(chuàng)建一個__init__.py的文件及auth.py的文件

    2、創(chuàng)建一個views的文件夾并在其內(nèi)部創(chuàng)建一個__init__.py的文件及auth.py的文件

    3、創(chuàng)建一個templates的文件夾并在其內(nèi)部創(chuàng)建一個login.html的文件及register.html的文件

    目錄結(jié)構(gòu)如下

    app/ auth/ __init__.py models/ __init__.py auth.py views/ __init__.py auth.py templates/ login.html register.html static/ blog/ __init__.pyRealProject/

    創(chuàng)建用戶模型User

    在models/auth.py文件中創(chuàng)建用戶模型如下:

    from datetime import datetimefrom RealProject import dbclass BaseModel(db.Model): “””基類模型 “”” __abstract__ = True add_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, ) # 創(chuàng)建時間 pub_date = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False) # 更新時間class User(BaseModel): “””用戶模型 “”” id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(128), unique=True, nullable=False) password = db.Column(db.String(320), nullable=False) avatar = db.Column(db.String(200), nullable=True) is_super_user = db.Column(db.Boolean, nullable=True, default=False) # 超級管理員標識 is_active = db.Column(db.Boolean, nullable=True, default=True) # 是否為活躍用戶 is_staff = db.Column(db.Boolean, nullable=True, default=False) # 是否允許登錄后臺 def __repr__(self): return ” % self.username

    在models/__init__.py中引入用戶模型

    from .auth import User

    在RealProject/__init__.py工廠函數(shù)中注冊模型models

    def create_app(test_config=None): app = Flask(__name__, instance_relative_config=True) if test_config is None: CONFIG_PATH = BASE_DIR / ‘RealProject/settings.py’ app.config.from_pyfile(CONFIG_PATH, silent=True) else: # test_config為一個字典 app.config.from_mapping(test_config) db.init_app(app) migrate.init_app(app, db) login_manager.init_app(app) # 注冊視圖 register_bp(app) # 注冊模型 from app.blog import models from app.auth import models return app

    同步數(shù)據(jù)庫

    flask db migrateflask db upgrade

    備注:在同步之前記住一定要導出環(huán)境變量

    創(chuàng)建登錄注冊視圖

    在app/auth/views/auth.py文件中創(chuàng)建登錄注冊視圖

    from flask import render_template, Blueprint, redirect, url_forfrom ..models import authbp = Blueprint(‘auth’, __name__, url_prefix=’/auth’, template_folder=’../templates’, static_folder=’../static’)@bp.route(‘/login’, methods=[‘GET’, ‘POST’])def login(): if request.method == ‘POST’: # 登錄相關邏輯代碼 return render_template(‘login.html’)@bp.route(‘/register’, methods=[‘GET’, ‘POST’])def register(): if request.method == ‘POST’: # 注冊相關邏輯代碼 # 注冊成功跳轉(zhuǎn)到登錄頁 return redirect(url_for(‘auth.login’)) return render_template(‘register.html’)

    這兩個視圖我們完全采用了藍圖方式綁定url和視圖函數(shù),其中template_folder和static_folder的路徑一定要設置正確,否則找不到位于該目錄下的templates文件夾,就無法正確加載!

    在app/auth/views/__init__.py文件中引入藍圖

    from .auth import bp

    在RealProject/__init__.py中的register_bp()函數(shù)中注冊藍圖

    def register_bp(app:Flask): # 注冊視圖方法 from app.blog import views as blog from app.auth import views as auth app.register_blueprint(blog.bp) # 注冊藍圖 app.register_blueprint(auth.bp) app.add_url_rule(rule=’/’, endpoint=’index’, view_func=blog.index)

    到這里我們的用戶模型及登錄注冊視圖的基本框架就已經(jīng)做好了,下一章節(jié)我們將實現(xiàn)博客的登錄注冊功能!

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年6月16日 21:19
    下一篇 2022年6月16日 21:20

    相關推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息