【问题标题】:django form label in {% for %} statement{% for %} 语句中的 django 表单标签
【发布时间】:2013-05-09 15:30:51
【问题描述】:

我想将 a 包裹在标签中,但是在渲染模板时,它没有生成正确的 html,这是我的代码:

{% for item in studentinfo %}
                  <form action="" method="">
                        {% csrf_token %}
          <tr>

                  <td>{{ item.nickname|default_if_none:"" }}</td>
            <td>{{ item.mobile|default_if_none:"" }}</td>
            <td>{{ item.register_at|date:"Y-m-d"|default_if_none:"" }}</td>

            <td>{{ item.sales.first_name|default_if_none:"" }}</td>
            <td><strong class="red-text">{{ item.price|default_if_none:"" }}</strong></td>
            <td><strong class="red-text">{{ item.remaining|default_if_none:"" }}</strong></td>
            <td>{{ item.level|default_if_none:"" }}</td>
            <td>
                    {% if item.state %}
                    {{ setstudentform.state|default:item.state }}
                    {% else %}
                    {{ setstudentform.state }}
                    {% endif %}
            </td>
            <td>{{ item.source|default_if_none:"" }}</td>
            <td>
                    {% if item.feature %}
                    {{ setstudentform.feature|default:item.feature }}
                    {% else %}
                    {{ setstudentform.feature }}
                    {% endif %}
            </td>

          </tr>
                  </form>
          {% endfor %}

但是它生成的html是这样的:

<form method="" action=""></form>
<input type="hidden" value="8N1O4Oks4MmgN1ujanMZX0o2X5XGUMny" name="csrfmiddlewaretoken">

&lt;form&gt; 里面什么都没有,这是为什么呢

【问题讨论】:

  • 什么是studentinfo?您的问题看起来不完整。
  • 嗯,是view返回的上下文,这里无所谓
  • 你能把那个 {% for %} 但用 {{ item }} 而不是那个大的 html 表单的输出放在这里吗?这可能有助于调试
  • 好的,我补充一下,好像html中不能在表格中放表格
  • 你可以把表格放在表格里。

标签: django forms for-loop


【解决方案1】:

你想要这个:

<form method="POST">
{% csrf_token %}
<table>
  {% for item in studentinfo %}
  <tr>
      <td>...</td>
  </tr>
  {% endfor %}
</table>
</form>

您的模板结构不是有效的 HTML。

另外,你不需要这个:

{% if item.feature %}
   {{ setstudentform.feature|default:item.feature }}
{% else %}
   {{ setstudentform.feature }}
{% endif %}

只需{{ setstudentform.feature|default:item.feature }} 就会按照您的意愿行事。

【讨论】:

    【解决方案2】:

    我认为这个问题不完整——我们还需要看看 {% for %} 周围有什么,但我会冒险猜测。

    您似乎正在尝试在表格行之间交错表格,这在 HTML 中可能是不合法的,并且会导致已解析的 DOM 树看起来可能类似于您的“生成的 HTML”示例。

    您是否检查了网络上的 HTML(使用查看源代码(除了 IE,当我上次使用它时,它总是将解析的 DOM 树输出为“源”),而不是 DOM 检查器)?我有根据的猜测是,您会发现您的 HTML 是正确的(或者,至少在您对其进行模板化时:))。

    所以,简而言之,我不认为

    <table>
      <form><tr>...</tr></form>
      <form><tr>...</tr></form>
    </table>
    

    不是合法的 HTML。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-06
      • 2019-10-21
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 2014-05-06
      相关资源
      最近更新 更多