为什么我的表单不会显示在example.html中?
这两个函数不能具有相同的render_to_response
模板名称(example.html)?
模型:
class A(models.Model):
name = models.CharField(max_length=255)
quantity = models.IntegerField(default=1)
视图
def show(request):
a = A.objects.all()
if request.method == 'POST':
form = XForm(request.POST)
if form.is_valid():
f = form.cleaned_data['f']
return HttpResponseRedirect('/')
else:
form = XForm()
return render_to_response('example.html', {'a': a, 'form': form})
def show_f(request, a_id):
#how to access to data from form?
f = form.cleaned_data['f']
A.objects.filter(id = a_id).update(quantity = f)
return render_to_response('example.html')
example.html的:
{% for x in a %}
{{ x.name }}
<form action="/show_f/{{x.id}}/" method="post"/>
{{form}}
<input type="submit" value="Run"/>
</form>
{% endfor %}
编辑:
我想从数据库中的每个对象显示一个表单字段,并在输入数量并提交表单后运行show_f方法(UPDATE quantity)
答案 0 :(得分:2)
您对此有何期待?如果show
呈现模板,a
将会出现但form
不会出现,因此您将获得一组空表单。如果show_f
呈现模板,form
将会出现但a
不会出现,因此for循环将无需迭代,结果将为空。
你到底想要做什么?使两个视图呈现相同模板没有问题,但它们都必须实际提供模板需要呈现的信息。
答案 1 :(得分:0)
如此处所述:https://docs.djangoproject.com/en/dev/topics/forms/#displaying-a-form-using-a-template
应使用例如:{{form.as_ul}}
呈现表单