问题标签 [flask-peewee]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
393 浏览

python - 烧瓶登录导致正确密码错误(使用peewee)

我目前正在尝试通过获取和调整flask-peewee扩展中包含的示例应用程序的一部分来构建一个应用程序(代码here)。我现在可以注册并显示登录屏幕。当我输入不正确的登录凭据时,我会收到一条消息,指出登录凭据不正确(如预期的那样)。但是当我输入正确的登录凭据时,我会得到一个巨大的回溯,我无法从中找到答案。

通常我会查看方法或模板,看看有什么问题。然而,在这种情况下,几乎所有东西(方法和模板)都由 peewee 处理。

下面我将首先粘贴 Traceback,然后(根据评论中的要求)粘贴我目前拥有的几个文件。非常欢迎任何有关可能出错的信息!

追溯:

我现在拥有的文件是:

  • 主文件
  • 应用程序.py
  • 授权文件
  • 配置文件
  • 模型.py

下面我把全部的内容贴上来,为了清楚起见可能会省略一些内容:

主文件

应用程序.py

授权文件

配置文件

模型.py

0 投票
1 回答
784 浏览

python - 让 peewee 管理员使用烧瓶安全性

我喜欢 peewee 和 Flask 的安全性,它们可以很好地协同工作,但我无法让 peewee 的管理功能正常工作。我真的不确定如何做到这一点,但我真的很想同时使用两者。我已经尝试了很多东西,但似乎没有任何效果。

我当前的代码如下所示:

当我尝试登录 Peewee Admin 时,我收到以下错误:`AttributeError: 'User' object has no attribute 'check_password'

编辑:

完整调试:

我真的不明白为什么这会引发 AttributeError。注册密码,并导入 BaseUser 类(check_password 需要)。我究竟做错了什么?

0 投票
1 回答
4597 浏览

python - 如何在烧瓶的蓝图中使用身份验证装饰器

我想在我的蓝图中使用以下基本身份验证装饰器:

在蓝图中:

但它依赖于flask_peewee.auth模块,该模块也需要一个数据库实例,它需要应用程序实例,因为Database()模块使用应用程序进行配置:

之前我通过在一个文件中实例化所有这些来简化应用程序时,我已经完成了这项工作app.py,但现在我想更好地组织它。

是否可以将我的db.Model定义和上面的requires_auth装饰器移动到另一个文件,比如一个db_models.py模块,然后将requires_auth装饰器导入我的个人蓝图定义中?如果我需要访问app对象来创建db对象,我该怎么做?


编辑:我重新组织了我的应用程序,如下所示:http ://charlesleifer.com/blog/structuring-flask-apps-a-how-to-for-those-coming-from-django/我把requires_auth函数放在我的auth.py模块我可以导入并在其中使用它,view.py但是当我尝试将它导入我的一个蓝图时它失败了。我认为这是因为 auth 模块导入了 app 模块,而蓝图正在扩展 app 模块,所以我得到了循环导入。有任何想法吗?

0 投票
1 回答
410 浏览

python - 在 Peewee 中使用 optgroup 生成选择

我在带有 Peewee ORM 的烧瓶应用程序中有以下模型:

我想生成一个多选字段,其中每门课程都是一个 optgroup,每个活动都是 Jinja 的 opgroup 中的一个选项。

说我有这样的事情:

  • 课程一
    • 活动一
    • 活动二
    • 活动三
  • 课程二
    • 活动四
    • 活动五

即Activity I、II和III中的ForeignKeyField指向Course I,而Course II中的ForeignKeyField指向Activity IV和V。

我的 Flask 应用程序中有以下视图:

我想得到这样的东西:

在 Jinja 中没有 optgroup 部分很容易得到这个:

但我不知道如何在 optgroup 中获取 Course.name 字段,然后在此 optgroup 中的选项中,其 ForeignKeyField 指向该课程的活动。我能想出的唯一解决方案是在 for 循环中运行所有课程,然后在该 for 循环中使用另一个 for 循环来运行所有活动并在 activity.Course.name 字段与 course.name 匹配时生成一个新选项,但这是非常低效的,因为您必须遍历每门课程的所有活动。

有没有一种简单有效的方法来生成这个选择框?

0 投票
2 回答
2128 浏览

python - 如何在 Flask 中获取自定义 SELECT 查询?

我想在Flask-Peewee上获取这个自定义查询

我尝试了以下代码,但没有成功,我得到“长”对象没有属性“fetchall”:

任何帮助将不胜感激。

已编辑>

这是 connect_db 函数:

0 投票
2 回答
608 浏览

python - 如何通过 URL 过滤 flask-peewee 中的查询?

我想通过flask-peewee运行以下查询,

merchant_name喜欢“海边%”

这是以下 URL 的返回 JSON,我需要过滤 merhcnat_name http://www.XXXXX.com/api/merchant_details/

http://www.XXXXX.com/api/merchant_details/?merchant_name__like=seaside(这不起作用)

0 投票
1 回答
3960 浏览

python - AttributeError:“SelectQuery”对象没有属性“is_active”

我正在尝试按照Flask Mega Tutorial结合 Flask 来学习 Peewee ORM 。在本教程的第 5 部分中,我使用 OpenID 创建了一个登录。在克服了一堆障碍之后,我现在在下面粘贴的函数中得到了一个 AttributeError login_user(user, remember = remember_me)

is_active在我的用户模型中找到如下:

我不知道我在这里做错了什么。有人可以帮我解决我在这里做错的事情吗?

欢迎所有提示!

0 投票
1 回答
42 浏览

python - 获取有关交易的每周信息

我有一个简单的网站,使用 Flask 和 Peewee 作为 ORM 来注释办公室里每个人都喝到的饮料,然后,每周左右一次,检查谁喝了什么,喝了多少,什么时候喝。我有一个名为 orders 的简单表,如下所示:

订单 - ID、产品、用户、数量、价格、日期

我想做的是有一个简单的页面,有人可以在其中查阅从特定日期到当天(例如,从 14-02 到今天 21-02)发生的事情。如何在 peewee 中进行此类查询?

0 投票
1 回答
610 浏览

python - 如何在 python Flask-peewee 中反转外键

我正在使用Flask-peewee并且有两个表用于类别和子类别,我想制作一个 api 来根据 JSON 中的类别列出所有子类别。(反向外键)

所以如果我们有 5 个主要类别和 20 个子类别,我们需要在 5 个主要类别下列出 20 个子类别,所以我们应该只显示 5 条记录在 JSON 中。

例如:

模型.py

api.py

0 投票
1 回答
1442 浏览

peewee - 如何将字符串文字参数传递给 peewee fn 调用

我在使用 peewee 的 fn 构造将字符串文字参数传递给 SQL 函数时遇到问题。我有一个对象定义为:

我试图在选择中使用 mySQL timestampdiff 函数来获取自上次登录以来的天数。查询应如下所示:

这是我正在尝试使用的 python peewee 代码:

但是当我执行这段代码时,我得到一个错误:

ProgrammingError: (1064, u"您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在 ''day', t1 附近使用的正确语法。lastLogin, now()) AS daysSinceLastLogin FROM userAS t1 '在第 1 行")

从这条消息来看,“day”参数周围的引号似乎保留在 peewee 生成的 SQL 中。而且 mySQL 不喜欢参数周围的引号。我显然不能离开python代码中的引号,所以有人可以告诉我我做错了什么吗?

更新:通过使用 SQL() peewee 命令添加 DAY 参数,我的查询按预期工作,没有引号:

但我不确定为什么在这种情况下必须使用 SQL()。我错过了什么,还是这是正确的答案?