Flask博客实战 – 创建用户相关应用

Flask博客实战 - 创建用户相关应用

在前几个章节我们已经详细地说了创建视图及url的方式,也熟悉了基本的增删改查方法,那么我们就可以利用之前所学的知识来实现用户相关应用,并构造好基本的登录注册功能视图!

最开始我们创建目录的时候就在app文件夹下预留了一个auth的文件夹,相关登录注册以及用户相关的数据及视图模板都放到这个文件夹下边

创建用户相关应用

在app/auth/目录下参照blog目录创建相关文件,这次我们将models和views放到文件夹中,使其成为一个块

1、创建一个models的文件夹并在其内部创建一个__init__.py的文件及auth.py的文件

2、创建一个views的文件夹并在其内部创建一个__init__.py的文件及auth.py的文件

3、创建一个templates的文件夹并在其内部创建一个login.html的文件及register.html的文件

目录结构如下

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

创建用户模型User

在models/auth.py文件中创建用户模型如下:

from datetime import datetimefrom RealProject import dbclass BaseModel(db.Model): “””基类模型 “”” __abstract__ = True add_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, ) # 创建时间 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工厂函数中注册模型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

同步数据库

flask db migrateflask db upgrade

备注:在同步之前记住一定要导出环境变量

创建登录注册视图

在app/auth/views/auth.py文件中创建登录注册视图

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’: # 注册相关逻辑代码 # 注册成功跳转到登录页 return redirect(url_for(‘auth.login’)) return render_template(‘register.html’)

这两个视图我们完全采用了蓝图方式绑定url和视图函数,其中template_folder和static_folder的路径一定要设置正确,否则找不到位于该目录下的templates文件夹,就无法正确加载!

在app/auth/views/__init__.py文件中引入蓝图

from .auth import bp

在RealProject/__init__.py中的register_bp()函数中注册蓝图

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)

到这里我们的用户模型及登录注册视图的基本框架就已经做好了,下一章节我们将实现博客的登录注册功能!

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月16日
下一篇 2022年6月16日

相关推荐

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息