《Flask 入门教程》完成打卡 & 留言 & 反馈

谢谢您的解答。

1 个赞

这本书的第九章中有一个命令$ coverage report,应该是要在虚拟环境下运行。可是书中在这个命令前没加(env),可能会让人认为这个命令不是在虚拟环境下运行的。望修改。

花了两天按照教程搭建成功并部署了,简单来说教程很棒,每个环节都很详细。

1 个赞

特地从helloflask入门教程过来的,看了几个小时,已经学的差不多了,讲解得非常简单,而且以项目带教学,真的很容易入门。特地过来感谢作者,希望可以继续更新,甚至到高阶版本

1 个赞

今天刚开始学习,目标是写一个网站出来,能够让用户输入一个markdown文本后,获得一个实时渲染的图片的链接,类似于这样
PyPI - License

因为我最近想引用一些开源项目的readme,但往往只能手动更新,否则就未来的读者只能看到上一次的内容,非常费力

自己目前只会一些Python,所以在flask和django中选了似乎更简单的flask,目前学到了第三章模板,第二章视图函数没看明白,休息休息下次继续学习:muscle:

加油!有遇到具体的问题欢迎发到 Steak Overcooked - 代码厨房 分类

感谢大佬!

用 Latex 将《Flask 入门教程》制作成了 pdf 电子书,已上传至 HelloFlask QQ 群中。

2 个赞

具体怎么生成的?有时间欢迎单独写一篇分享一下

利用周末时间,用 Latex (一种排版系统)人肉(复制粘贴)生成的。

1 个赞

辛苦啦。我等过段时间写个新版本,然后再看看怎么实现 PDF 生成的自动化

初学者,刚把Python的基础课程过了一遍,然后开始看的这个教程,非常好,照着敲了一遍,自己改了一遍。
自己修改的版本使用了MongoDB在线的Atlas,在主页添加了留言模块,留言模块没做认证,任何人都可以评论,样式也懒得调了,也没做部署。
代码main分支是教程的版本,使用的postgresql数据库,mongo分支是用的MongoDB,使用了Flask-MongoEngnie-3连接的数据库。
https://github.com/acelee0621/flask_app
感谢作者的教程。

2 个赞

在第9章节单元测试的内容,按照博主的写法,setup运行的时候会报错,没有应用上下文。

import unittest

from app import app, db, Movie, User


class WatchlistTestCase(unittest.TestCase):

    def setUp(self):
        # 更新配置
        app.config.update(
            TESTING=True,
            SQLALCHEMY_DATABASE_URI='sqlite:///:memory:'
        )
        # 创建数据库和表
        db.create_all()
        # 创建测试数据,一个用户,一个电影条目
        user = User(name='Test', username='test')
        user.set_password('123')
        movie = Movie(title='Test Movie Title', year='2019')
        # 使用 add_all() 方法一次添加多个模型类实例,传入列表
        db.session.add_all([user, movie])
        db.session.commit()

        self.client = app.test_client()  # 创建测试客户端
        self.runner = app.test_cli_runner()  # 创建测试命令运行器

    def tearDown(self):
        db.session.remove()  # 清除数据库会话
        db.drop_all()  # 删除数据库表

    # 测试程序实例是否存在
    def test_app_exist(self):
        self.assertIsNotNone(app)

    # 测试程序是否处于测试模式
    def test_app_is_testing(self):
        self.assertTrue(app.config['TESTING'])

需要创建应用上下文才能执行:

import unittest

from app import app, db, User, Movie

class WatchListTestCase(unittest.TestCase):
    def setUp(self):
        print('setUp')

        # 更新配置
        app.config.update(
            TESTING=True,
            SQLALCHEMY_DATABASE_URI='sqlite:///:memory:'
        )

        # 创建应用上下文
        self.app_context = app.app_context()
        self.app_context.push()

        # 创建数据库和表
        db.create_all()
        user = User(name='Test', username='test')
        user.set_password('123')
        movie = Movie(title='Test movie Title', year='2019')

        db.session.add_all([user, movie])
        db.session.commit()
        self.client = app.test_client()
        self.runner = app.test_cli_runner()

    def tearDown(self):
        print('tearDown')
        db.session.remove()
        db.drop_all()

        # 移除应用上下文
        self.app_context.pop()

    def test_app_exist(self):
        self.assertIsNotNone(app)

if __name__ == '__main__':
    unittest.main()

估计是新版本的 Flask-SQLAlchemy 有变化,我过段时间会给这个教程更新版本,到时处理下。感谢反馈!