【问题标题】:Django template not posting checkboxes dataDjango模板不发布复选框数据
【发布时间】:2014-11-03 21:52:56
【问题描述】:

我是 Django 和网络开发的新手。

我有一个简单的模板,它在表格中有一些数据,表格带有复选框,在表格外部有一个提交按钮,但都在同一个表格中。

    <form  action="{% url 'delLogin' %}" method="POST">{% csrf_token %}
    <table class="table table-striped table-hover">
    <thead>
    <tr><th>Total: {{ object_list.count }}</th><th></th><th></th><th></th></tr>
        <tr><th>Login</th><th>Customer</th></th><th></th></tr>
    </thead>
        <tbody>

        {% for obj in object_list %}
          <tr>
            <td> <a href="{% url 'DetailLogin' obj.id_login %}"> {{ obj.id_login }}</a></td>
            <td> <a href="{% url 'DetailCust' obj.customer %}"> {{ obj.customer }} </a></td>       
            <td> 
                <input type="checkbox" name="{{ obj.id_login }}" value="{{ obj.id_login }}"/>
            </td>
          </tr>
        {% endfor %}
        </tbody>

    </table>
    <input type="submit" value="Delete selected">
    </form>
</div>

这应该将数据发布到另一个视图:

def deleteObjects(request):
template = 'Gestione/delObj.html'
objects = []
for obj, value in request.POST.items():
    objects.append(value)
context = {'objects' : objects}
return render(request, template, context)

渲染到这个模板:

    <form action="" method="post">{% csrf_token %}
{% if objects %}
{% for object in objects %}
    <p>Are you sure you want to delete "{{ object }}"?</p>
{% endfor %}
{% endif %}
    <input type="submit" value="Confirm" />
</form>

页面加载没有错误,但没有显示“对象”,我不知道为什么。

提前感谢您的帮助

【问题讨论】:

    标签: django post checkbox django-templates django-views


    【解决方案1】:

    我认为 request.POST.items() 没有返回您认为返回的内容。您应该提出一个 ValueError 或其他东西来查看它返回的内容,然后您可以修改您的 for 循环以适当地解析它。

    【讨论】:

      【解决方案2】:

      您正在寻找的是动态表单:

      自己的表单类:

      from django import forms
      
      class DeleteForm(forms.Form):
          def __init__(self, own_param, *args, **kwargs):
              super(DeleteForm, self).__init__(*args, **kwargs)
              self.fields['field'] = own_param
      

      【讨论】:

      • 谢谢,但我认为不可能像您在此处描述的那样进行。问题是我在表格中有一个对象列表,并且每一行都有一个用于发送数据的复选框,因此传递给表单的对象数量是可变的。
      【解决方案3】:

      “页面加载没有错误,但“对象”没有显示......” 这条线引起了我的注意 问题是您试图将复选框的名称和值分配给 objectlist 变量。

      <input type="checkbox" name="{{ obj.id_login }}" value="{{ obj.id_login }}"/>
      

      改为写:

      <input type="checkbox" {{ obj.id_login }}/>
      

      【讨论】:

        猜你喜欢
        • 2011-09-07
        • 2021-10-18
        • 1970-01-01
        • 2015-12-11
        • 2011-05-26
        • 2021-02-27
        • 1970-01-01
        • 2016-12-04
        • 2013-11-09
        相关资源
        最近更新 更多