Шаблон Django не публикует данные флажков

Я новичок в Django и веб-разработке.

У меня есть простой шаблон, который содержит в таблице некоторые данные с формой с флажками и внешними с этой таблицы кнопку отправки, но все в том же виде.

<form action="{% url 'delLogin' %}" method="POST">{% csrf_token %}
 

 {% for obj in object_list %}
 
 {% endfor %}
 <table>
 <thead>
 <tr><th>Total: {{ object_list.count }}</th></tr>
 <tr><th>Login</th><th>Customer</th></tr>
 </thead>
 <tbody><tr>
 <td> <a href="{% url 'DetailLogin' obj.id_login %}" target="_blank"> {{ obj.id_login }}</a></td>
 <td> <a href="{% url 'DetailCust' obj.customer %}" target="_blank"> {{ obj.customer }} </a></td> 
 <td> 
 
 </td>
 </tr></tbody>

 </table>
 
 </form>

Это должно помещать данные в другое представление:

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 %}
 
</form>

Страница загружается без ошибок, но "объекты" не отображаются, и я не могу понять, почему.

Благодарим за помощь заранее

3 ответа

Я думаю, что request.POST.items() не возвращает то, что вы думаете о его возврате. Вы должны поднять ValueError или что-то посмотреть, что его возвращает, а затем вы можете изменить свой цикл for, чтобы надлежащим образом разобрать его.


То, что вы ищете, это динамические формы:

Собственный класс формы:

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


"Страница загружается без ошибок, но" объекты "не отображаются..." Эта строка привлекла мое внимание. Проблема заключается в том, что вы пытаетесь присвоить имя и значение вашего флажка переменной объекта.

вместо этого напишите:

licensed under cc by-sa 3.0 with attribution.