Django模板不发布复选框数据

时间:2014-11-03 21:52:56

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

我是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>

页面加载时没有错误,但&#34;对象&#34;没有显示,我无法理解为什么。

提前感谢您的帮助

3 个答案:

答案 0 :(得分:0)

我认为request.POST.items()没有返回你认为它返回的内容。你应该引发一个ValueError或者什么来看看它返回什么,然后你可以修改你的for循环来适当地解析它。

答案 1 :(得分:0)

您所寻找的是动态表格:

自己的表单类:

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

答案 2 :(得分:-1)

&#34;页面加载时没有错误,但&#34;对象&#34;没有显示....&#34; 这条线引起了我的注意 问题在于您尝试将复选框的名称和值分配给objectlist变量。

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

代替写:

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