如何使用POST发送动态隐藏表单变量

时间:2014-07-07 04:42:39

标签: django django-forms

我有一个页面,将数据库中的条目作为“用户”提取并列出它们。典型结果如下:

  • John
  • Marty
  • 汤姆
  • Jane
  • 克里斯

现在,我想点击特定的名称,然后转到他们的特定页面。为此,我有一个表单发布到一个视图,该视图需要已被“点击”的用户

到目前为止,我在循环中有一个表单,遍历'users'表中的每个'user'。设置工作正常,但主要问题是表单元素'name'被最后一个用户替换。无论如何,我点击它的名字总是传递最后一个用户的用户名。

{% for user in users %}

    <h1>{{ user.firstName }}  {{ user.lastName }}</h1>    

     <form action="/friend_profile/" method="post" accept-charset="utf-8">

    <input type="hidden" name="selectedFriend" value ={{ user.userName }}>

    <button type="submit" value="view profile">

{% endfor %}

我没有使用DJango表单,只是使用request.method =='POST'来接收变量。

所以我的愚蠢问题是,有没有办法动态创建'name'表单元素并提交特定于用户的内容?现在,无论我点击哪个用户,表单总是提交用户“Chris”,因为它是列表中的最后一个用户。

1 个答案:

答案 0 :(得分:1)

  

现在,无论我点击哪个用户,表单总是会向用户“Chris”提交,因为它是列表中的最后一个用户。

那是因为您没有关闭<form>标记,因此浏览器会看到一大堆嵌套表单。

此外,您需要引用并转义隐藏value中的input属性:

<form action="/friend_profile/" method="post" accept-charset="utf-8">
<input type="hidden" name="selectedFriend" value="{{ user.userName|escape }}">
<button type="submit" value="view profile">
</form>