谢谢您的解答。
这本书的第九章中有一个命令$ coverage report,应该是要在虚拟环境下运行。可是书中在这个命令前没加(env),可能会让人认为这个命令不是在虚拟环境下运行的。望修改。
特地从helloflask入门教程过来的,看了几个小时,已经学的差不多了,讲解得非常简单,而且以项目带教学,真的很容易入门。特地过来感谢作者,希望可以继续更新,甚至到高阶版本
今天刚开始学习,目标是写一个网站出来,能够让用户输入一个markdown文本后,获得一个实时渲染的图片的链接,类似于这样
因为我最近想引用一些开源项目的readme,但往往只能手动更新,否则就未来的读者只能看到上一次的内容,非常费力
自己目前只会一些Python,所以在flask和django中选了似乎更简单的flask,目前学到了第三章模板,第二章视图函数没看明白,休息休息下次继续学习
感谢大佬!
具体怎么生成的?有时间欢迎单独写一篇分享一下
辛苦啦。我等过段时间写个新版本,然后再看看怎么实现 PDF 生成的自动化
初学者,刚把Python的基础课程过了一遍,然后开始看的这个教程,非常好,照着敲了一遍,自己改了一遍。
自己修改的版本使用了MongoDB在线的Atlas,在主页添加了留言模块,留言模块没做认证,任何人都可以评论,样式也懒得调了,也没做部署。
代码main分支是教程的版本,使用的postgresql数据库,mongo分支是用的MongoDB,使用了Flask-MongoEngnie-3连接的数据库。
https://github.com/acelee0621/flask_app
感谢作者的教程。
在第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 有变化,我过段时间会给这个教程更新版本,到时处理下。感谢反馈!