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)删除。
用户投稿
上一篇 2022年6月16日 21:19
下一篇 2022年6月16日 21:20

相关推荐

  • ios手游模拟器(手游模拟器ios)

    本文主要讲的是ios手游模拟器,以及和手游模拟器ios相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 哪个iOS模拟器能多开手游账号?可以推荐个好用的模拟器给我吗…

    2022年11月27日
  • 短视频策划内容的3个要点(短视频策划内容怎么做)

    短视频在制作时,内容框架非常重要。如果直奔主题,然后结束,聚卓告诉你,这样的短视频已经过时了。现在的短视频需要框架的,但不是任何框架,它需要一种易于理解和消化的框架。而且,现在大多…

    2022年11月27日
  • 美团第三季度实现营收626亿元,即时配送订单量增至50亿笔

    新京报讯(记者秦胜南)11月25日,美团发布业绩公告显示,第三季度营收为626亿元,较去年同比增长28.2%,净利润为12.2亿元。第三季度,美团即时配送订单数增长至50亿笔。截至…

    2022年11月27日
  • 存储过程语法(sql server存储过程语法)

    今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

    2022年11月26日
  • 个人怎么做抖音带货(个人做抖音带货能赚钱吗)

    抖音如今是大家很熟悉的短视频平台,不过现在的抖音却不只是短视频那么简单,它的功能非常丰富,其中一个就是可以带货,相信很多小伙伴都有在抖音上买过东西,抖音如今的变现能力也是不容小觑的…

    2022年11月25日
  • 小红书平台的一些机制及玩法详解(小红书玩法有哪些)

    关于小红书 一:小红书平台的一些机制 1. 笔记内容的CES评分机制 2. 笔记流量入口与长尾效应 二:小红书优质笔记的特点(分维度、类型分析) 1.笔记的本身架构组成 维度 2.…

    2022年11月25日
  • 百度关键词快速排名的4大原理解析(百度怎么刷关键词)

    近期百度公告惊雷算法2.0,升级之快还是第一次吧,看来百度对于刷点击行为是零容忍了。之前尹华峰SEO技术博客介绍过一篇如何使用刷点击工具,其实市面上有很多这类SEO快速排名的软件,…

    2022年11月25日
  • 科比19岁女儿遭自称与她生“科比式孩子”男子跟踪骚扰

    极目新闻记者王亮亮黄佳琪 据福克斯新闻网报道,当地时间11月21日,已故篮球巨星科比·布莱恩特的长女娜塔莉亚·布莱恩特21日向法院提交临时限制令,声称这位32岁的前科从十几岁起就骚…

    2022年11月24日
  • 抖音世界杯投屏怎么弄 抖音看世界杯怎么看能投屏吗

    抖音作为短视频平台第一次进军世界杯直播,小编还是很期待的,毕竟每天没事的时候都会刷一下抖音,看直播的话也是方便了不少,那抖音看世界杯可以投屏吗?下面一起来了解一下。 抖音世界杯投屏…

    2022年11月24日
  • 玩转海外ASO优化的8个技巧(苹果aso优化怎么做)

    在海外,一款APP要呈现到用户眼前,基本上都绕不开iOS和Android渠道商。那么,如何让你的App被更多用户发现呢?本文作者总结了8个APP海外ASO优化推广策略,一起来看一下…

    2022年11月24日

联系我们

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