Flask从零博客开发实战
文章平均质量分 70
本教程以实战博客为线索,逐步深入Flask开发各个环节,掌握Flask的基本视图流程,打造完整的前后端交互,实现简单的博客后台管理,基本的权限思路,以及配合常用的Flask第三方扩展为实现模型、视图、表单数据库的完整操作路径!最终实现一个完整的博客网站!
轻编程
每天一篇,轻轻松松学编程!
展开
-
Flask博客开发实战-用户中心实现修改个人信息功能
该功能的实现在做用户管理的时候其实我们已经写过了,这里其实仅仅只需要做的是获取到当前用户,允许用户登录后修改自己用户信息就可以了!在app/admin/forms.py中的CreateUserForm类中新增刚才已生成字段的表单字段!那么,用户中心仅允许自己编辑自己的信息,我们只需要做的就是拿到自己的用户id来替换这个逻辑当中即可!修改app/auth/templates/userinfo.html模板中的我的评论菜单如下。他的修改的逻辑是从url中传入了要修改的某个用户的id来区别当前修改的是谁的信息!原创 2023-01-15 15:00:36 · 789 阅读 · 0 评论 -
Flask博客开发实战 -用户中心查看个人评论功能
这个功能其实非常简单,代码也都是重复讲过的,这里大家可能会忽略掉我们之前讲过的这个g对象,这个g对象是一个全局对象,并且我们把user对象挂载到了g对象下边,就可以通过g.user的方式去获得当前登录的用户信息!这里的主要逻辑代码大家可以去看app/auth/views/auth.py中的load_logged_in_user()和login_required()两个函数!修改app/auth/templates/userinfo.html模板中的我的评论菜单如下。修改个人中心我的评论菜单URL。原创 2023-01-15 14:57:04 · 286 阅读 · 0 评论 -
Flask博客开发实战 - 评论管理功能实现
评论管理与文章管理以及其他的管理功能类似,不同的是管理后台不需要添加评论功能,因此上我们只需要实现查看所有的评论列表以及删除功能即可,另一个就是可以查看该条评论归属于某一篇文章,可以直接跳转到该文章页面去!在app/admin/templates/admin/index.html中的文章管理菜单下添加一个评论管理的菜单,并链接到后天管理的评论列表。当我们规划好需求之后,那么其实写代码就非常简单了,经过之前的大量练习,可能不需要我来带大家写,大家也能很快的实现这个功能!后台管理模板中添加评论管理菜单。原创 2023-01-15 14:55:28 · 514 阅读 · 0 评论 -
Flask博客开发实战 - 实现文章评论功能
以上代码大部分不需要解释,在之前的章节中已经写过很多,那这里就需要注意一个文章和用户与评论之间的关联关系,user_id和post_id字段分别是标明了用户及文章与评论内容之间的关联关系,也就是我们在上一步中说的该评论归属某一篇文章和某个用户,所以在发表评论时我们需要向数据库保存他们的关联关系!提示:当前视图的post请求中没有任何权限校验!在app/blog/detail.html中的最后添加如下代码,相关代码已经在之前的章节中写了很多了,大家可以自行理解消化下,视频中我也会对相关代码进行大概的说明!原创 2023-01-15 14:53:25 · 716 阅读 · 0 评论 -
Flask博客开发实战|本地如何快速运行调试源码
Flask博客开发实战|本地如何快速运行调试源码原创 2023-01-15 14:48:51 · 275 阅读 · 0 评论 -
Flask博客实战 - Nginx+uwsgi+mysql+宝塔面板部署Flask
我们的项目已经基本的框架和功能都完善好了,是不是已经迫不及待的想把项目发布到线上向伙伴们炫耀了!部署项目是一个涉及知识面比较广的技能,那么我们还是以最简单,最容易上手的方式先来实现他再说,至于是否真的理解其中的原理,那就要在项目之外去学习更多的知识!宝塔面板是一款非常优秀的服务器运维软件,可以很方便的部署包括PHP/JAVA/PYTHON等各种语言的项目,可以很方便的使用各种部署方案,无论是nginx还是mysql等更多相关第三方所用到的软件几乎都可以在软件商店一键安装,非常适合初学者,并且很多公司也是用宝原创 2022-06-24 15:16:52 · 1290 阅读 · 0 评论 -
Flask博客实战 - 实现个人中心及权限管理
教程到这里我们的内容就已经过了95%,学习如逆水行舟,不进则退,互联网技术尤其如此,所以不论学习任何东西都要去写、去思考、去实践,往往看起来非常简单的东西反而自己却无从下手,不是缺乏编程思维就是基础不牢固,无论是那一个原因,通过勤奋不辍的练习都能弥补,知识的分享也是一种学习的手段,祝愿每个看到此教程并且能坚持到这里的同学学有所成!在管理后台中比较有名的管理权限模型一般遵循RABC模型去实现,如果这部分内容展开讲的话,那堪比另外一个教程了,那么我们的博客非常简单,就以最简单的方式实现权限的管理,也给大家提供了原创 2022-06-24 15:11:04 · 859 阅读 · 0 评论 -
Flask博客实战 - 实现侧边栏最新文章及搜索
这个就非常简单了,只需要将将最新文章传入blog的上下文中即可在app/blog/views.py的inject_archive函数中新增代码如下:在app/blog/templates/cate_list.html的侧边栏新增如下代码:实现搜索模块搜索模块的逻辑是通过get请求把关键字传给后端,后端通过filter方法自配合字段的like方法进行模糊匹配,返回结果即可!在app/blog/templates/cate_list.html的侧边栏新增如下代码:在app/blog/原创 2022-06-23 14:24:30 · 359 阅读 · 0 评论 -
Flask博客实战 - 实现侧边栏文章归档及标签
按照正常的博客网站布局,一般都会存在侧边栏,侧边栏比较常见的几个模块分别是 搜索、最新文章、文章归档、标签等!该教程会带大家实现这四个模块!按照当前项目的布局,我们的侧边栏仅在blog应用中的页面展示,也就是博客的列列表页和详情页展示,那么这个视图是通过blog中的蓝图绑定的,因此我们在左侧边栏的时候只需要针对这个应用即可!在app/blog/views.py中通过博客的蓝图注入上下文,代码如下首先我们这里选择按月归档的方式,也就是把每个月的文章归类到一起,那么我们就必须先把年月查询显示到侧边栏,代码原创 2022-06-22 15:50:21 · 693 阅读 · 0 评论 -
Flask博客实战 - 集成富文本编辑器Quill
为什么需要集成富文本编辑器?一个博客最主要的功能是什么,那就是写作,如果不能对我们发布的内容进行排版美化,那么我们所发布的内容又有什么意义? 对于阅读者来说也是非常的不友好和不尊重,一篇排版精良的文章往往会让人赏心悦目,也会让读者爱上你的博客,所以富文本编辑器的使用就显得非常重要!为什么选择富文本编辑器Quill?大家可能会有疑问,市面上那么多富文本编辑器为什么选择他,首先是Quill富文本编辑器是一款开源的编辑器,它在 GitHub 上的 star 数名列前茅。体验下来,它的优势是轻量、兼容性强、支持的插原创 2022-06-21 11:57:56 · 1041 阅读 · 0 评论 -
Flask博客实战 - 实现文章列表页及详情页
在设计数据库字段的时候,我们将分类与文章设置为一对多关系,一个分类下可以有多篇文章,那么导航栏通过上一节我们已经实现了,那么这一节我们就实现每个分类下的文章列表页!在app/blog/views.py中实现分类页视图这个函数的逻辑也是在之前实现管理后台的时候多次实现,这里我们用了filter的查询方法根据url传进来的分类主键id来查询当前分类下的数据,并对其进行分页!在app/blog/templates/中创建一个cate_list.html的模板文件该模板中我们查询出了刚才视图中返回的数据原创 2022-06-20 16:17:39 · 419 阅读 · 0 评论 -
Flask博客实战 - 实现全站导航菜单及首页数据展示
我们博客的设计是全站顶部菜单为通用菜单,调用的数据为文章的分类,那么如何将文章分类数据传递到每个页面的上下文呢?为了将新变量自动注入模板的上下文中,Flask 中存在上下文处理器context_processor。上下文处理器在呈现模板之前运行,并且能够将新值注入模板上下文。上下文处理器是返回字典的函数。然后,对于应用程序中的所有模板,此字典的键和值将与模板上下文合并:用法为如下所示,这只是一个例子:上面的上下文处理器使一个名为 user 的变量在模板中可用,其值为 g.user。这个例子不是很有趣,原创 2022-06-17 17:14:53 · 790 阅读 · 0 评论 -
Flask博客实战 - 实现用户管理
通过上几节的功能实现,我们应该已经对flask_sqlalchemy的增删改查非常熟悉了,那么我们就来实现 最后一个用户管理的功能,用户管理功能部分内容,我们主要为大家展示如何实现flask的图片上传功能 以及用户密码的修改思路及方法!路径:app/admin/views.py这个视图就非常简单,之前的章节我们已经做过很多次了,无需在此赘述!在创建添加视图之前应该先要创建表单在app/admin/forms.py中创建一个CreateUserForm的表单类这里我们将定义一个avatar的表单为原创 2022-06-17 17:12:24 · 459 阅读 · 0 评论 -
Flask博客实战 - 实现文章管理
文章管理的增删改查与我们在上一章节的分类增删改查基本一致,唯一不同的是添加文章的时候会同时添加分类及标签,一个是一对多的关系一个是多对多的关系,所以这一章节我们主要掌握这一个知识点即可!基本的逻辑思路是:查询出所有文章列表数据,并对其分页!在app/admin/views.py中创建分类列表视图,代码如下:创建列表页html模板在app/admin/templates/admin/目录下创建article.html模板实现添加博客内容在app/admin/forms.py中创建Post的原创 2022-06-15 16:34:47 · 223 阅读 · 0 评论 -
Flask博客实战 - 实现博客的分类管理
一般的后台管理都包含了该模块的增删改查的基本操作,我们也是以这样的思路先去简单的实现博客分类的增删改查操作!基本的逻辑思路是:查询出所有分类列表数据,并对其分页!在app/admin/views.py中创建分类列表视图,代码如下:这里的这个装饰器就是我们对该视图进行了验证,只有登录的用户才可以访问!这行代码是说从一个GET请求中获取一个page的参数,默认值是1,类型必须为int,那么最终反映到url当中就是这样的:这个page的值就是这行代码查询出所有的分类数据,通过order_by()原创 2022-06-15 16:25:11 · 270 阅读 · 0 评论 -
Flask博客实战 - 创建后台管理应用
Flask与django最大的不同就在这里,django的理念是快速开发,所以他尽可能多的帮我们集成了所有web的功能,包括了一个强大的admin后台管理系统!而Flask倡导的是自由度,因此无论大小的系统,只要牵扯到数据管理的增删改查的地方都要我们手动去实现,当然Flask也有对应的第三方扩展,但本教程更多的是让大家熟悉Flask,而不是学习扩展,所以我们不回去用第三方扩展来实现这里的功能!在目录下创建一个模块目录,与blog和auth模块的目录结构一致,也就是我们所说的应用!目录结构如下:创建各功原创 2022-06-15 16:17:19 · 787 阅读 · 0 评论 -
Flask博客实战 - 使用 WTForms 进行表单验证
上一章节我们通过在html中直接编写表单的方式进行数据传递,并且在视图中对前端传递的数据进行了简单的认证,但是如果把验证数据的代码与逻辑混合在一起,将使得视图的代码不够清晰,并且难以维护,稍加疏忽就会产生验证漏洞,如果细心的同学其实可以发现,在之前的登录注册中我们一直没有对空表单进行验证,当然这是我故意为之,但如果在生产环境,这将是一个灾难的开始,所以,在编程中无论是前端还是后端都要求要对数据进行验证,作为后端,更要保持一种永远不相信前端传递数据的态度去做数据校验。本章节我们将使用Flask官方推荐的Fla原创 2022-06-15 16:10:58 · 303 阅读 · 0 评论 -
Flask博客实战 - 实现登录注册功能
上一章节我们已经创建了一个用户应用,并创建了用户模型,那么我们这节就开始实现一个简单的用户登录注册功能!登录注册功能Flask有一个非常优秀的扩展Flask-login,我们可以选择使用这个扩展来实现,但为了学习我们暂时不使用这个第三方扩展,而是选择使用session来实现!首先,我们需要完善登录的html页面, 路径为:代码详解:这个登陆模板继承了的样式,这个中的模块及代码其实就是我们之前实现的首页,只是我们把他作为一个模板基类来继承他!这段代码中其实就是写了一个输入账号密码的表单,其他多余的代码都原创 2022-06-14 16:12:18 · 891 阅读 · 0 评论 -
Flask博客实战 - 创建用户相关应用
在前几个章节我们已经详细的说了创建视图及url的方式,也熟悉了基本的增删改查方法,那么我们就可以利用之前所学的知识来实现用户相关应用,并构造好基本的登录注册功能视图!最开始我们创建目录的时候就在app文件夹下预留了一个auth的文件夹,相关登录注册以及用户相关的数据及视图模板都放到这个文件夹下边在目录下参照blog目录创建相关文件,这次我们将models和views放到文件夹中,使其成为一个块1、创建一个models的文件夹并在其内部创建一个的文件及的文件2、创建一个views的文件夹并在其内部创建一个的文原创 2022-06-14 15:56:08 · 206 阅读 · 0 评论 -
Flask博客实战 - 实现博客首页视图及样式
本套教程是一个Flask实战类教程,html/css/javascript等相关技术栈不会过多的去详细解释,那么就需要各位初学者尽可能的先去掌握这些基础知识,当然本套教程不需要你对其非常精通,但最起码得做到能看懂其意思!静态文件是相对动态的web应用而言的,一般是指css和js文件! 网站应用部署的时候,这些静态文件通常由Nginx等静态文件服务器处理,但是在开发过程中, Flask 也能做好 这项工作。一般,Flask的静态文件位于应用的 中,模板文件位于应用的 中。因此上,我们需要在目录下分别创建一个原创 2022-06-14 15:37:34 · 297 阅读 · 0 评论 -
Flask博客实战 - 掌握Flask-SQLAlchemy的增删改查
既然我们选择了使用ORM框架,那就必须熟练掌握其提供的增删改查方法,在正式编写视图事前,本节内容我们先在shell环境中来了解和熟悉其增删改查的基础方法!参考资料:https://flask-sqlalchemy.palletsprojects.com/en/2.x/queries/#inserting-records这里我们以博客的分类为案例进行演示1、首先设置环境变量,进入shell环境至于如何导出环境变量请参考《安装并配置Flask-SQLAlchemy》章节,最后同步数据库字段相关内容!2、运行如下原创 2022-06-14 15:34:16 · 252 阅读 · 0 评论 -
Flask博客实战 - 博客相关模型创建
在之前的章节中我们已经知道模型对应的其实就是数据库字段,通过这种方式创建数据库字段的方式主要依赖的是ORM系统,当然如果你对sql语法非常熟悉,完全可以不用ORM,但使用ORM的好处是有利于避免一些sql注入的风险,对sql不熟悉的同学比较友好,但略微会有性能损失,使用sql语句的话,如果你学的是一知半解,也容易写出一些性能不佳的语句,各有各的优点和不足,没有谁更好,具体眼看你自己的业务场景!一个博客我们先从最简单的入手,博客分类、文章内容、文章标签,应该说拥有这三个基本的功能就算是一个非常简单的博客,那么原创 2022-06-14 15:26:41 · 106 阅读 · 0 评论 -
Flask博客实战 - 安装使用Flask-Migrate
Flask-Migrate 是一个扩展,他是Alembic的进一步封装,以更好的适配Flask和Flask-SQLAlchemy 应用程序。 就实际的数据库迁移而言,所有内容都由Alembic处理,因此您可以获得完全相同的功能。Alembic 是一款轻量型的数据库迁移工具,它与 SQLAlchemy 一起共同为 Python 提供数据库管理与迁移支持。配置Flask-Migrate1、首先在工厂函数所在文件中引入2、在工厂函数中注册, 最终最后,完整的工厂函数如下使用Flask-原创 2022-06-14 15:20:41 · 391 阅读 · 0 评论 -
Flask博客实战 - 安装Flask-SQLAlchemy
Flask-SQLAlchemy 是 Flask 的扩展,它为您的应用程序添加了对 SQLAlchemy 的支持。它旨在通过提供有用的默认值和额外的帮助程序来简化将 SQLAlchemy 与 Flask 结合使用,从而更轻松地完成常见任务。这是官方的介绍,其实对于刚想写个简单博客的同学来说,这个东西说了等于没说,因为他不知道SQLAlchemy是什么?能干什么?所以自然对以上这段话就无从理解!我这里简单说一下,无论是博客类网站还是更大的商城类网站,我们在页面上所看到的数据都是存储在数据库,那数据库主要分为关原创 2022-06-14 15:18:00 · 415 阅读 · 0 评论 -
Flask博客实战 - 蓝图应用
这段话该如何理解呢?其实这个没必要去深究,我们只要知道蓝图就是把我们应用目录的模块注册到Flask类,充当一个中间人的角色!学过django的同学应该知道,应用的视图函数一般都写在应用目录下的views.py中,没学过django也无关紧要,在应用目录app下的blog文件夹下创建一个views.py的文件, 这里用来集中存储blog的视图代码!通过蓝图创建一个博客首页的基本视图,代码如下:代码详解1、首先引入了蓝图对象,这个Blueprint与Flask类是2、实例化一个蓝图对象,需要两个原创 2022-06-14 15:16:19 · 144 阅读 · 0 评论 -
Flask博客实战 - 工厂函数
创建 Flask 应用程序最直接的方法是直接在代码顶部创建一个全局 Flask 实例,就像我们快速上手中的那样!在大型项目中这种做法是行不通的,而是在一个函数内创建它。此函数被称为应用程序工厂,简称-工厂函数。应用程序所需的任何配置、注册和其他设置都将在函数内部进行,然后应用程序将被返回。在项目目录(RealProject)目录下的__init__.py中创建如下代码:代码详解以上代码在注释中已经有详细说明,但这里有必要再对每一行代码做详细逐一解释,顺序依次从上往下!1、创建一个create_ap原创 2022-06-13 19:01:08 · 377 阅读 · 0 评论 -
Flask博客实战 - 目录结构
为保证项目可持续发展,利于后期扩展,我们从开始创建项目就应该先规划好目录结构,一个好的目录结构可以让我们的项目整洁有序,并利于维护和后期进一步扩展!之前快速上手中创建的app.py的文件便可以删除,亦或者你重新创建一个项目开始以下的内容,建议是新建一个目录来开始我们以下的内容!在实际开发过程中,一个完整的项目一定是由多个不同的功能模块构成,以我们的博客系统为例,主要由两个大的功能模块构成,一个是负责用户认证以及用户权限操作的模块auth, 一个则是我们博客的主应用模块blog,他主要负责博客的内容/分类等一原创 2022-06-13 18:51:07 · 307 阅读 · 0 评论 -
Flask博客实战 - 快速上手
首先创建一个的文件,以开始我们下来的操作现在我们的目录结构看起来像下边这样:创建视图app.py中写入如下所示代码:这就是一个最小的flask应用程序,当我们这个文件默认为的时候,我们甚至都不需要配置环境变量就可以使用的命令来启动该项目!在终端运行flask run命令,将启动flask自带的开发服务器,终端输出如下所示:看到这样的信息,即代表启动成功,在浏览器访问该5000端口的地址,即可看到页面会正确输出上边这些代码都做了什么?这些 其实就是flask的核心内容,其他的都是在这个基原创 2022-06-13 18:47:52 · 319 阅读 · 0 评论 -
Flask博客实战 - 环境配置
本教程演示将采用使用最为广泛的win10系统,终端为CMD终端作为开发系统基础支持! macOS/Liunx系统Windows系统创建了项目文件夹venv环境文件夹macOS/Liunx系统Windows系统您的 shell 提示符将更改为显示激活的环境的名称。在激活的环境中,使用以下命令安装 Flask:在安装flask的同时也自动安装了Werkzeug/Jinja/MarkupSafe/ItsDangerous/Click四个依赖!本教程不会教大家如何安装使用mysql,但原创 2022-06-13 18:45:54 · 164 阅读 · 0 评论 -
Flask博客实战 - 前言
本套教程命名为《Flask从零博客开发实战》,本教程以实战博客的各个功能为线索,逐步深入Flask开发各个环节,掌握Flask的基本视图流程,打造完整的前后端交互,实现简单的博客后台管理,基本的权限思路,以及配合常用的Flask第三方扩展为实现模型、视图、表单数据库的完整操作路径!最终实现一个完整的博客网站!但凡对python Web开发感兴趣的同学,一般都应该知道django和flask框架,而初学者经常会有以下疑问?这是很多初学者最爱纠结的问题,以网络比较流行的一个说法来回答这个问题,“小孩子才做选择,原创 2022-06-13 18:16:15 · 222 阅读 · 0 评论