我无法弄清楚如何在django中引用表单的(变量)名称。这是我目前的代码:
email_edit.html
中的:
{% for email in email_list %}
<table>
<tr>
<td><form action="/emails/edit/" method="post">
{% csrf_token %}
<input type="text" name="{{ email.id }}" value=" {{email}}"></td>
<td><input type="submit" value="Edit" name="action"></td>
<td><input type="submit" value="Delete" name="action"></td>
</tr>
</form>
</table>
{% endfor %}
<p>Add new</p>
<form action="/emails/edit/" method="post">
{% csrf_token %}
<input type="text" value="" name="add_email">
<input type="submit" value="Add" name="action">
def email_edit(request):
email_list = Email.objects.order_by('email')
if request.POST:
action = request.POST.get('action')
if action == "Add":
Email.objects.create(email=request.POST['add_email'])
return HttpResponseRedirect('/emails/edit/')
if action == 'Delete':
Email.objects.filter(id={{ emails.id }}).delete()
return HttpResponseRedirect('/emails/edit/')
if action == "Update":
Email.objects.filter(id= {{ emails.id }}).update(name=request.POST[{{ emails.id }}])
return HttpResponseRedirect('/emails/edit/'))
{{ email.id }}
文件中的views.py
有哪些内容可以正确引用表单?
答案 0 :(得分:3)
不要太粗鲁,我想你可能想退后一步,想要完成的任务。您有一个要编辑或删除的电子邮件列表。您实际上不需要提交表单来进入另一个视图,您将在其中编辑或删除其中一个记录。
您肯定需要在编辑或删除视图上使用表单来发布您的值,但在此列表的情况下,我99.9%确定您只需要一个锚标记来编辑或删除:
{% for email in email_list %}
<table>
<tr>
<td>{{email}}></td>
<td><a href="{% url edit_email email.id %}">Edit</a></td>
<td><a href="{% url delete_email email.id %}">Delete</a></td>
</tr>
</table>
{% endfor %}
希望这是有道理的。
[后续答复] 鉴于您设置的代码,我会使每一行都是它自己的表单,并且电子邮件字段需要具有非动态名称。否则,在request.POST集合中访问该值将变得更加困难。以下是我如何设置它:
#views.py
from django.shortcuts import render
def my_view(request):
email_list = MyModel.objects.all()
if request.method == 'POST':
email = request.POST.get('email')
action = request.POST.get('action')
if action == 'Edit':
#do edit
else:
#do delete
return render(request, 'template.html', {'email_list' : email_list})
#template.html
{% for email in email_list %}
<table>
<tr>
<form action="." method="post">
<td>{{ email }}<input type="hidden" name="email" value="{{ email }}" /></td>
<td><input type="submit" name="action" value="Edit" /></td>
<td><input type="submit" name="action" value="Delete" /></td>
</form>
</tr>
</table>
{% endfor %}