首页 > 解决方案 > 为什么我在烧瓶模板中得到了正确的对象,而在点击功能中却得到了一堆数字?

问题描述

我正在使用烧瓶开发文章评论。但是,当我通过单击处理程序函数从烧瓶中测试 commentIp 对象时,我得到了一串数字而不是对象。

这是模板代码。(cips:一个cip对象数组;我在模板中得到了正确的对象)


  {% for i in range(0,comments |length) %}
      {% set comment=comments[i] %}
      <p>{{ loop.index }}. Email:{{ comment.email }}</p>
      <p>PostTime:{{ comment.postTime }}</p>
      <p>Content:{{ comment.content }}</p>

      {% set up_btn_id='up_btn'~ i|string %}
      {% set down_btn_id='down_btn'~ i|string %}

      {% if cips[i].vote_state ==0 %}
          <button id='{{up_btn_id}}' onclick="upVote(this)">up:{{ comment.upvoteNum }}</button>
          <button id="{{down_btn_id}}" onclick="downVote(this)">down:{{ comment.downvoteNum }}</button>

      {% elif cips[i].vote_state ==1 %}
          <button id='{{up_btn_id}}' onclick="upVote(this)" style="color: green">up:{{ comment.upvoteNum }}</button>
          <button id="{{down_btn_id}}" onclick="downVote(this)">down:{{ comment.downvoteNum }}</button>

      {% else %}
          <button id='{{up_btn_id}}' onclick="upVote(this)">up:{{ comment.upvoteNum }}</button>
          <button id="{{down_btn_id}}" onclick="downVote(this)" style="color: red">down:{{ comment.downvoteNum }}</button>
      {% endif %}


      {% if flag==1 %}
          <form action="../cdelete/{{ comment.id }}" method="post">
              Password:<input type="password" name="psw">
              <input type="submit" value="delete">
          </form>
      {% endif %}
  {% endfor %}

这是upVote功能

 function upVote(up_btn) {
        const cips = '{{cips}}';
        for (let cip in cips)
            console.log(cip);//a bunch of Numbers from 0 to 72
    }

标签: javascriptflask

解决方案


当将值放入模板时,它会采用文字值。cipsjavascript 无法理解的数组。想一想,它是您在 python 中定义的对象列表 - javascript 应该如何知道这些对象是什么?它适用于您的值,comment.upvoteNum因为这是一个文字值。它不理解这些对象 - 您可能会看到对象内存地址。因此,为了将您的 {{cips}} 转换为 javascript 中的数组,您需要将这些对象转换为json. Flask 有一些方便的功能 - 看看tojson- 它的 HTML 安全以及 json 安全。看起来您正在尝试更新您传入的模型的状态(即投票)。您可能希望将其提交给烧瓶视图函数,因此请记住,对 HTML 中的 cip 对象所做的更改就是这样。除非将它们发送回您的服务器并进行处理,否则它们不会反映在 python 中的 cip 模型中。


推荐阅读