Flask狼书笔记 | 08_个人博客(下)

这篇具有很好参考价值的文章主要介绍了Flask狼书笔记 | 08_个人博客(下)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Flask狼书笔记 | 08_个人博客(下),学而时习之,flask,笔记,python,后端

8 个人博客

8.4 初始化博客

1、安全存储密码

密码不要以明文的形式直接存储在数据库中,以防被攻击者盗取、泄露。一般的做法是,不存储密码本身,而存储通过密码生成的散列值。(但密码仍然可能在传输过程中被截获)

from werkzeug.security import generate_password_hash, check_password_hash
password_hash = generate_password_hash('cat')
is_right = check_password_hash(password_hash, 'cat')

疑惑:加盐散列值、密码扩展,是什么样的作用原理?

2、创建管理员用户

可以提供一个博客初始化命令,以免手动在数据库中,使用sql语句添加管理员用户记录。

@app.cli.command()
@click.option('--username', prompt=True, help='The username used to login.')
@click.option('--password', prompt=True, hide_input=True,
             confirmation_prompt=True, help='The password used to login.')
def init(username, password):
    # 创建管理员记录相关的操作
    ...

prompt参数设置为True会在用户没有输入参数值时,请求用户输入。hide_input用于隐藏输入内容,confirmation_prompt用于要求二次输入确认。

8.5 使用Flask-Login管理用户认证

博客程序需要根据用户的身份开放不同的功能,扩展Flask-Login提供了用户会话管理功能,管理用户的登入、登出,以及视图保护(如要求某些视图登录后才能访问)功能。(p275)

不过,这些功能即使自己利用session对象手动实现,也比较简单。

8.6 CSRFProtect实现CSRF保护

关于对资源的更新和删除操作,为了防止csrf攻击,应当使用POST方法提交这类请求,即使用表单提交。但为每个这样的操作都需要单独定义一个WTForms表单类,显然太过麻烦。Flask-WTF内置的CSRFProtect扩展为这类操作提供了更简单的方式。

使用该csrf保护,首先需要初始化扩展,并注册到程序实例。

from flask_wtf.csrf import CSRFProtect
csrf = CSRFProtect()
csrf.init_app(app)

然后直接在表单中创建一个csrf的隐藏字段。

<form method="post" action="{{ url_for('delete_post', post_id=post.id) }}">
    <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
    ...
</form>

并且你可以注册一个错误处理函数,捕捉程序中产生的csrf错误,并产生对应的响应。

from flask_wtf.csrf import CSRFError

@app.errorhandler(CSRFError)
def handle_csrf_error(e):
    return render_template('errors/400.html', description=e.description), 400

8.7 编写博客后台

1、文章管理——删除确认弹窗

在后台管理中可以查看文章列表,并删除其中的文章,删除通常是不可恢复的。因此,为了防止误触,我们需要添加一个删除确认弹窗,使用浏览器内置的confirm弹窗组件即可实现。

<button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Are you sure?');">
    删除
</button>

这一小结的其它内容都是一些比较简单的、面向业务逻辑的考虑,就不继续介绍了

Flask-Admin扩展:可以简化你编写管理后台的工作。(p297)

小结

这个项目,书中足足用了80页来介绍,涉及的内容确实比较丰富。我在看的时候有些赶进度,走马观花,快速带过。大部分的知识点都没有经过我的实践去体会,又只能把这个任务留给以后去完成了啊!文章来源地址https://www.toymoban.com/news/detail-733063.html

到了这里,关于Flask狼书笔记 | 08_个人博客(下)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flask狼书笔记 | 07_留言板

    这是一个简单的程序,涉及到的大部分是之前所学习到的基础知识。新涉及的python包: BootStrap-Flask , Flask-Moment , Faker , Flask-Debug Toolbar 。 Git : 将大量代码放到 app.py 一个文件里,代码的管理会不太方便,可读性也差。本节将使用一种新的代码结构 导入配置 :可以从pyt

    2024年02月09日
    浏览(30)
  • Flask狼书笔记 | 01_初识Flask,02_Flask与HTTP

    2023-8-11 以前对网站开发萌生了想法,又有些急于求成,在B站照着视频敲了一个基于flask的博客系统。但对于程序的代码难免有些囫囵吞枣,存在许多模糊或不太理解的地方,只会照葫芦画瓢。 而当自己想开发一个什么网站的时,就如同摸着石头过河,常在许多小问题上卡住

    2024年02月11日
    浏览(21)
  • Flask Web开发实战(狼书)| 笔记第1、2章

    2023-8-11 以前对网站开发萌生了想法,又有些急于求成,在B站照着视频敲了一个基于flask的博客系统。但对于程序的代码难免有些囫囵吞枣,存在许多模糊或不太理解的地方,只会照葫芦画瓢。 而当自己想开发一个什么网站的时,就如同摸着石头过河,常在许多小问题上卡住

    2024年02月12日
    浏览(27)
  • 个人博客项目笔记_01

    前端的工程运行流程: 进入项目目录执行cmd命令: 若是第一次启动需要依次输入如下命令: 之后直接执行 npm run dev 即可! 新建maven工程blog作为父工程,然后在父工程中创建子工程blog-api 向父工程的pom.xml文件中导入依赖。 在子工程的resources文件夹下创建application.properties文

    2024年04月08日
    浏览(82)
  • 如何使用Docker部署开源Leanote蚂蚁笔记并发布个人博客至公网

    最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 本篇文章介绍如何使用Docker部署Leanote蚂蚁笔记,并且结合cpolar内网穿透实现公网远程访

    2024年02月22日
    浏览(38)
  • Python 08学习之文件操作

    😀前言 欢迎来到Python 08学习之文件操作。在本文中,我们将介绍计算机中常见的文本文件和二进制文件,并探讨在Python中操作文件的步骤和相关函数/方法。通过学习本文,您将能够了解如何使用Python打开、读取、写入和关闭文件,以及如何按行读取文件内容。希望您能够通

    2024年02月04日
    浏览(23)
  • flask web学习之flask与http(四)

    一、重定向进阶功能 1.1 重定向回上一个页面 有时候,我们在某些界面执行操作一些操作后,不希望界面跳转到其他指定网页上,而希望网页能重定向为用户刚才浏览的界面,以便继续完成操作,例如在某个页面需要登录后才能进行操作,我们希望登录后不跳转到主页界面,

    2024年02月03日
    浏览(25)
  • 个人博客系统|基于Springboot的个人博客系统设计与实现(源码+数据库+文档)

    个人博客系统目录 目录 基于Springboot的个人博客系统设计与实现 一、前言 二、系统功能设计  三、系统实现 1、管理员功能实现 (1)用户管理 (2)文章分类管理 (3)公告信息管理 (4)博主信息管理 2、博主功能实现 (1)博主文章管理 3、用户功能实现 (1)博主文章信

    2024年04月13日
    浏览(33)
  • 一、Flask学习之HTML

    首先需要搭建环境: app = Flask(__name__) : 创建了一个Flask应用实例, __name__ 参数表示当前模块的名称,通常用于确定资源的位置。 @app.route(\\\'/show/info\\\') : 这是一个装饰器,将下面的 index() 函数与指定的路由 /show/info 关联起来。当用户访问这个路由时,将执行 index() 函数。 运行会

    2024年01月21日
    浏览(25)
  • 二、Flask学习之CSS

    1.1 直接在标签中添加 1.2 在头部添加 1.3 单独在文件添加 mycss.css html文件: 上面三种表示的结果是一样的。 CSS有多种选择器: ID选择器(使用#) 类选择器(使用.) 标签选择器 效果: 属性选择器 后代选择器 3.1高度和宽度 宽度是可以支持百分比的 div 等块级标签默认是有效

    2024年01月20日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包