带参数的 Flask 表单

2024-01-15

我正在尝试用一个参数定义 Flask 表单。这是我的方法:

forms.py

class RegisterPatternForm(FlaskForm):
    cursorPatients = MongoClient('localhost:27017').myDb["coll"].find({"field1": self.myParam}).sort([("id", 1)])
    patientOpts = []
    for pt in cursorPatients:
        row = (str(pt.get("id")), "{} {}, {}".format(pt.get("surname1"), pt.get("surname2"), pt.get("name")))
        patientOpts.append(row)

    patients = SelectMultipleField('Select the patient', validators=[Optional()], choices=patientOpts)
    submit = SubmitField('Register')

    def __init__(self, myParam, *args, **kwargs):
        super(RegisterPatternForm, self).__init__(*args, **kwargs)
        self.myParam = myParam

routes.py

myParam = 5
form = RegisterPatternForm(myParam)

基本上,我想读取变量myParam定义于routes.py在表格上RegisterPatternForm。将参数插入routes.py作品,以及__init__中的方法RegisterPatternForm。失败的地方是读取以以下开头的行上的字段时cursorPatients.

因此,我的问题是,我该如何解决这个问题以便能够阅读myParam表单内的值?


关于问题。

cursorPatients / patients/etc 是类级变量(static多变的)。这意味着你没有instance and properties在这个级别。粗略地说,你试图使用self访问对象但对象尚未创建。

如果我理解正确的话你需要改变一些choices用一个Form property.

让我们尝试使用以下命令来改变选择__init__:

class RegisterPatternForm(FlaskForm):
    patients = SelectMultipleField('Select the patient',
                                   validators=[Optional()],
                                   choices=[('one', 'one')])

    def __init__(self, patients_choices: list = None, *args, **kwargs):
        super().__init__(*args, **kwargs)
        if patients_choices:
            self.patients.choices = patients_choices

RegisterPatternForm()  # default choices - [('one', 'one')]
RegisterPatternForm(patients_choices=[('two', 'two')])  # new choices

如你看到的patients选择正在改变使用constructor。所以在你的情况下应该是这样的:

class RegisterPatternForm(FlaskForm):
    patients = SelectMultipleField('Select the patient',
                                   validators=[Optional()],
                                   choices=[])

    def __init__(self, myParam: int, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.myParam = myParam
        self.patients.choices = self._mongo_mock()

    def _mongo_mock(self) -> list:
        """
        db = MongoClient('localhost:27017').myDb["coll"]
        result = []
        for pt in db.find({"field1": self.myParam}).sort([("id", 1)]):
            blablabla....
        return result
        Just an example(I `mocked` mongo)
        """
        return [(str(i), str(i)) for i in range(self.myParam)]


form1 = RegisterPatternForm(1)
form2 = RegisterPatternForm(5)
print(form1.patients.choices)  # [('0', '0')]
print(form2.patients.choices)  # [('0', '0'), ('1', '1'), ('2', '2'), ('3', '3'), ('4', '4')]

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带参数的 Flask 表单 的相关文章

随机推荐

  • “this”关键字似乎不起作用

    我试图理解如何this关键字在 JavaScript 中有效 我制作了这个脚本 function click this innerHTML changed 在此 HTML 中使用
  • 在 R 中将多个 XML 文件合并到一个数据框中

    我有许多 XML 文件 大约 100 000 个 它们都如下所示 每个文件大约有 100 个点节点 我只展示其中五个以供说明
  • 在 F# 元组中使用 CustomComparison 和 CustomEquality 实现自定义比较

    我来这里是为了询问一个特定的主题 我确实在网上找到了一些有关此问题的信息 我正在实现 Minimax 算法的 F 版本 我现在遇到的问题是我想比较我的树的叶子 下面的数据结构 搜索 VS 给我的错误 我得到了这样的结果 我曾经拥有的树类型
  • 将 bash 环境变量发送回 python Fabric

    我正在尝试将 bash 环境变量传递回我的结构函数 如下所示 from fabric api import env def env localhost All the environment variables relating to yo
  • 从 fasta 文件中删除多个序列

    我有一个字符序列的文本文件 由两行组成 标题和下一行中的序列本身 该文件的结构如下 gt header1 aaaaaaaaa gt header2 bbbbbbbbbbb gt header3 aaabbbaaaa gt headerN a
  • 将 docker 映像从 GCR 拉入 GKE 时出错“无法拉取映像 .... 403 Forbidden”

    背景 我有一个 GKE 集群突然无法从 GCR 提取我的 docker 镜像 两者都在同一个 GCP 项目中 它已经运行良好几个月了 提取图像没有任何问题 现在在没有进行任何更改的情况下开始抛出错误 注意 我通常是团队中唯一访问 Googl
  • 记录亚马逊 Alexa 未处理的话语

    是否可以记录用户提出的触发未处理意图的问题 我打算做什么 当用户说出 Alexa 无法理解的话语时 它会触发未处理的意图 这里我想请用户重复该语句并将其存储在数据库中以供将来参考 这需要我创建一个意图 期望有一个可以接受语句的槽 即槽值不会
  • 应用程序版本未显示在 Spring Boot Banner.txt 中

    运行应用程序时 banner txt 中定义的应用程序版本不会显示在控制台上 它的定义是根据Spring Boot 文档 http docs spring io spring boot docs current SNAPSHOT refer
  • Python:在PDF中搜索文本

    我想写一个这样的函数 输入 一个 PDF 文件 一个字符串 该 PDF 是可搜索的 例如 它是由 MS Word 创建的 输出 PDF 文件中字符串的页面和位置 坐标 x 和 y 如果有 你能给我一些提示 什么库 方法 来用Python来做
  • C++ 标准库或其他广泛使用的库中的单链表?

    好像C 标准库里只有双向链表 没有单链表 吧 是否有广泛使用的带有单链表的 C 库 有的是slist http www boost org doc libs 1 35 0 doc html intrusive slist htmlBoost
  • 将 git 子模块与 python 一起使用

    我在这个网站上阅读了很多关于 git 子模块使用的博客文章和问题 但仍然不知道如何更好地在 python 中使用它们 我的意思是 如果我有这样的包 管理依赖项的更简单方法是什么 mypkg init py setup py submodul
  • 在 Spark RDD 和/或 Spark DataFrame 中重塑/旋转数据

    我有一些以下格式的数据 RDD 或 Spark DataFrame from pyspark sql import SQLContext sqlContext SQLContext sc rdd sc parallelize X01 41
  • 为什么scanf可以将errno设置为零?(当输入“ctrl+D”时)

    手册告诉我们 errno永远不会被任何系统调用或库函数设置为零 但我想知道 为什么以下代码中的errno可以通过scanf设置为零 当scanf 输入 ctrl D 时 include
  • 没有让 JSR303 注释与 Tomcat 7 一起使用

    经过几个小时的谷歌和几个教程后 我被击败了 事实并不是我收到的错误可以给我提示问题是什么 而是完全没有错误让我发疯 下面的代码可以工作 只是没有达到应有的效果 用于检查输入不为空或长度小于 3 个字符的注释永远不会运行 当部署项目或写入 n
  • 如何确定 Java 应用程序的主类?

    我们正在开发一个平台 许多开发人员将在其中编写自己的 ETL 应用程序 这些应用程序使用供应商的 API 然后将其提交到平台上执行 我们希望限制开发人员在编写 Main 类 通常只使用供应商的 API 时不要只顾自己的事情 以促进一些牢固的
  • 版本号 float、decimal 或 double

    我有一个文档管理系统 其中文档可以有多个版本 每个版本都会被保存 用户可以查看版本历史记录 我想知道的是 我应该使用什么数据类型作为版本号 小数 浮点还是双精度 我正在使用 NET 和 C 版本号开始于0 1以及每一个发表的major版本将
  • 分段函数 lmfit

    我正在尝试定义一个分段函数 以便由 Python 中的 lmfit 库拟合 我遇到的问题是我为该函数定义的参数不会与我提交的数据一起评估 我有一个与我的案例有点相似的例子here https stackoverflow com questi
  • 如何在 bash 中使用正则表达式验证版本号是否有效?

    我正在尝试验证版本号是否与版本模式匹配 但似乎检查由于某些奇怪的原因而失败 bin bash VERSION 1 2 3 if VERSION d d d then echo INFO lt gt Version VERSION else
  • Rails 将参数传递给 ActiveRecord 回调函数

    我的一个 AR 模型中有以下代码片段 after update cache bust The cache bust模型中的方法接受一个参数 布尔值 该参数将自身的值设置为false默认情况下 我怎样才能通过true从我上面定义的 Activ
  • 带参数的 Flask 表单

    我正在尝试用一个参数定义 Flask 表单 这是我的方法 forms py class RegisterPatternForm FlaskForm cursorPatients MongoClient localhost 27017 myD