【问题标题】:how to retrieve input value of html form if form is in django for loop如果表单在django for循环中,如何检索html表单的输入值
【发布时间】:2014-05-05 09:55:29
【问题描述】:

我遇到了一个情况。下面给出了一个 django 模板 ip_form.html。

<form method = "GET">
  {% for val in value_list %}
    <input type='text' value = '{{ val }}'> {{ val }}</input>
  {% endfor %}
</form>

我想告诉你,我在 value_list 中没有未知的 val(可能为零)。所以可能不使用 django form.py(而且我在特定视图函数的特定时间获得价值,即不知道它会一直发生的天气)

让我们在views.py中说

def view1(request):
 value_list = [1,2,3,4,5] # it will change every time view1 will get request
 if request.method == "GET":
    # i want to retrieve here post
 return render ('ip_form.html','value_list':value_list)

如何使用 form.py

那么我该如何找回它。您可以参考我的 post 方法。(它不是敏感数据,所以 get 方法没有问题)

谢谢。

【问题讨论】:

  • 你应该看看 django 表单集。
  • 我阅读了 django 的表单,但它只显示了 forms.py 的方式
  • 你需要解释一下
  • 已编辑,请查看更新

标签: python django forms


【解决方案1】:

您需要将name 属性添加到您的输入,然后您可以使用此名称来检索值列表,使用Django QueryDict getlist method

HTML:

<form method="POST">
  {% for val in value_list %}
    <input type='text' value='{{ val }}' name='my_list'>{{ val }}</input>
  {% endfor %}
</form>

查看:

def view1(request):
    value_list = [1,2,3,4,5] # it will change every time view1 will get request
    if request.method == "POST":
        values_from_user = request.POST.getlist('my_list')
    return render ('ip_form.html', 'value_list': value_list)

values_from_user 将是表单中输入值的列表(如果表单有零个 input 元素,则为空列表)。

请注意,我将您的表单方法更改为POST,否则您认为request.method 测试将毫无意义。

【讨论】:

  • 谢谢,所以我不需要使用 form.py 以及如何检查 form.is_valid
  • 我向您展示了一种不使用内置 Django Forms Frakework 的方法,因为您问的是这个。您可以使用该框架实现类似的效果,有人可能会认为您应该这样做。 is_valid 方法是框架自带的,所以在使用上面的方法时是不可用的。
猜你喜欢
  • 2018-02-08
  • 1970-01-01
  • 2018-10-28
  • 2013-05-15
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多