2014-07-07 50 views
-1

我有一个页面从数据库中提取条目作为'users'并列出它们。一个典型的结果是这样的:如何使用POST发送动态隐藏表单变量

  • 约翰
  • 马蒂
  • 汤姆
  • 克里斯

现在,我想在一个特定的单击名称和去他们的具体页面。为此,我有一个表单发布到期望已被“点击”的用户的视图

到目前为止,我在循环中有一个表单,该表单遍历'users'表中的每个'用户'。设置工作正常,但主要问题是表单元素'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'来接收变量。

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

回答

1

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

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

另外,你需要在你的隐藏input引用和逃避value属性:

<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> 
+0

真棒!谢谢 :) – summerNight