ListField 在编辑/创建帖子中显示
    而不是

2024-03-17

我正在一个项目中使用 Flask、mongoengine,我正在尝试从中获取基本的东西http://docs.mongodb.org/manual/tutorial/write-a-tumblelog-application-with-flask-mongoengine/ http://docs.mongodb.org/manual/tutorial/write-a-tumblelog-application-with-flask-mongoengine/

实现上述链接中的所有内容后,我在帖子中添加了一个新的“标签”字段,当我尝试创建帖子时,我的标签不显示输入框。

任何帮助表示赞赏。

我的代码和截图如下

class Post(db.DynamicDocument):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    title = db.StringField(max_length=255, required=True)
    slug = db.StringField(max_length=255, required=True)
    comments = db.ListField(db.EmbeddedDocumentField('Comment'))
    tags = db.ListField(db.StringField(max_length=30)) # New field I added

模板表格

{% macro render(form) -%}
<fieldset>
{% for field in form %}
{% if field.type in ['CSRFTokenField', 'HiddenField'] %}
   {{ field() }}
{% else %}
  <div class="clearfix {% if field.errors %}error{% endif %}">
    {{ field.label }}
    <div class="input">
      {% if field.name == "body" %}
        {{ field(rows=10, cols=40) }}
      {% else %}
        {{ field() }}
      {% endif %}
      {% if field.errors or field.help_text %}
        <span class="help-inline">
        {% if field.errors %}
          {{ field.errors|join(' ') }}
        {% else %}
          {{ field.help_text }}
        {% endif %}
        </span>
      {% endif %}
    </div>
  </div>
{% endif %}
{% endfor %}
</fieldset>
{% endmacro %}

渲染表单代码

{% extends "admin/base.html" %}
{% import "_forms.html" as forms %}

{% block content %}
<h2>
  {% if create %}
  Add new Post
  {% else %}
  Edit Post
  {% endif %}
</h2>

<form action="?{{ request.query_string }}" method="post">
  {{ forms.render(form) }}
  <div class="actions">
    <input type="submit" class="btn primary" value="save">
    <a href="{{ url_for("admin.index") }}" class="btn secondary">Cancel</a>
  </div>
</form>
{% endblock %}

据我所知,您的问题是您告诉 WTF 呈现标签字段,但 WTForms 不知道如何处理该信息。

从看Flask-MongoEngine https://flask-mongoengine.readthedocs.org/en/latest/文档,似乎ListField只是一个FieldList as WTForms 引用它 http://wtforms.simplecodes.com/docs/0.6/fields.html#field-enclosures.

目前,您实际上并没有在 WTForms 中独立定义表单,您只是使用 Flask-MongoEngine 中包含的魔法,所以我的第一次尝试是向您的宏添加更多逻辑,添加一个{% elif field.type == 'ListField' %}并尝试发现其中包含的内容以进行迭代以生成您的表单。快速查看源代码,类似下面的内容可能会起作用。

{% elif field.type == 'ListField %}
    {# render_the_group_label #}
    {% for subfield in field.entries %}
        {% if subfield.type == 'StringField' %}
            {# render_the_subfield #}
        {% endif %}
    {% endfor %}
...

该代码需要进行处理,但希望它能为您指明正确的方向。否则,我实际上会在 WTForms 中单独定义表单,以便您在代码端获得更多控制。幸运的是他们提供csv 标签示例 http://wtforms.simplecodes.com/docs/0.6/fields.html#custom-fields如果您需要走那条路,这应该会对您有所帮助。我写了一个指南 http://thefort.org/a/using-the-python-property-builtin-to-simplify-form-handling-in-flask/使用不同的路线@property装饰器来实现类似的效果,这至少可以让你指向终点线。

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

ListField 在编辑/创建帖子中显示
    而不是 的相关文章

随机推荐

  • 在facet_wrap中绘制平均线

    我有以下数据集 structure list Geschaeft c 0 0961028525512254 0 0753516756309475 0 0 0722803347280335 0 0 000877706260971328 Gas
  • Pandaboard 交叉编译 Qt

    我花了几周的时间尝试为我的 Panda 板交叉编译 Qt 但没办法 我无法通过 configure 如果有人能给我帮助 我将不胜感激 我的主机系统是Ubuntu 13 04 86 64位 在Virtualbox中运行 我的目标系统是 Pan
  • Python 中的舍入是如何工作的?

    我对 Python 中舍入的工作原理有点困惑 有人能解释一下为什么Python会这样吗 Example gt gt gt round 0 05 1 this makes sense 0 1 gt gt gt round 0 15 1 thi
  • 转换文件:Android 中的 Uri 到文件

    转换的最简单方法是什么android net Uri https developer android com reference android net Uri持有一个对象file 键入一个java io File https develo
  • “在源 Y 中找不到事件 ID X 的描述。”

    我正在尝试将自定义事件从我的 Web 应用程序写入 Windows 事件日志 我没有运气让消息字符串正常工作 我不断收到 无法找到源 Y 中事件 ID X 的描述 为了缩小范围 我决定将一个事件写入我的机器上已存在的源 我只是查看了已经写出
  • Nginx 配置中静态位置的多个位置

    我的应用程序将在两个位置提供静态文件 一个是 my path project static 另一个是 my path project jsutils static 我很难让网络服务器在两个目录中查找静态内容 这是我的应用程序的 nginx
  • UICollectionView 动画(插入/删除项目)

    我想在插入和 或删除 UICollectionViewCell 时自定义动画样式 我需要这个的原因是 默认情况下 我看到插入单元格的动画具有平滑的淡入淡出效果 但是删除单元格具有向左移动 淡出动画的组合 如果不是因为一个问题 我会对此感到非
  • 使用具有多个比较器的比较器

    我可以使用此代码中的所有简单比较器进行排序 但不能ComplexComparator 我不知道如何编码才能使其正常工作 任何建议 解释将不胜感激 这是我的主要程序 package pkgTest import java util Array
  • 如何使用 Elasticsearch 编写条件查询?

    我有一个简单的 Elasticsearch JSON 查询 如下所示 query bool must match id 1 must match tags name a1 仅当值 本例中为 a1 不为空时 如何执行第二个 必须 条件 您可以
  • IBM Blockchain Marble 演示中的交易存储在哪里?

    我正在运行下面链接中提到的 IBM 提供的区块链演示 https github com IBM Blockchain marbles https github com IBM Blockchain marbles 我在一个 Linux 系统
  • 如何从 Firestore 查询中排除元素?

    我有一个用户集合 我想从数据库中查询所有用户并将它们显示在RecyclerView除了一个 mine 这是我的数据库架构 users collection uid document uid fR5bih7SysccRu2Gu9990TeSS
  • 如何像对象一样操作Json响应?

    我的 jQuery ajax 返回 JSon 对象 我首先阅读了其他文章 但他们的回复文字不喜欢我的 我的回复内容 来自萤火虫响应 item country USA lan EN country Turkiye lan TR 现在我试图提醒
  • 通过内省打印 ctypes“Structure”的所有字段

    test c include
  • 在 XAML (WPF) 中将图标放入文本框中

    我想将一个小图标 一个 png 文件 放在文本框的一角 我的意思的草图位于http dosketch com view php k mIPeHLSBLx0e2YpoVpYO http dosketch com view php k mIPe
  • 创建自定义链轮处理器的文档?

    我正在尝试为 Rails 创建一个链轮预处理器 它会发现 png rb资产管道中的文件 并使用它们生成我的应用程序中各个页面的 png 屏幕截图 我已经阅读了很多关于这个主题的内容 但我似乎找不到任何关于如何进行此设置的简单文档 请帮助 这
  • 在 Active Record 中使用 find() 和多个 where 子句

    我想将 Active Record 查询后的内容 使用括号 分为 3 组 第一组是从第一个 Where 子句到最后一个 orWhere 第二个和第三个将使用 andWhere 请给我关于如何使用括号分隔所有 3 个部分的建议 query B
  • UICollectionView 不调用委托方法

    我已经设置了一个UICollectionView在故事板中并连接数据源和委托出口 我已经通过笔尖注册了一个单元格 我将其出队cellForItemAtIndexPath 方法 所有工作都完美地期望委托方法永远不会被调用 例如 当触摸一个单元
  • 如何在 Javascript 中实现应用模式

    Javascript 中引用函数调用模式的应用调用模式是什么 我该如何使用它 使用这种调用模式有什么好处 指某东西的用途apply与函数上下文相关 this关键字 和参数传递 首先 我想你应该知道在什么情况下this关键字是隐含地 set
  • 如何从 ~/.aws/config 加载配置

    变更日志 https github com aws aws sdk js blob master CHANGELOG md 2440 says Load config from aws config if AWS SDK LOAD CONF
  • ListField 在编辑/创建帖子中显示

    我正在一个项目中使用 Flask mongoengine 我正在尝试从中获取基本的东西http docs mongodb org manual tutorial write a tumblelog application with flas