两个函数具有相同的render_to_response模板

时间:2012-10-10 12:44:17

标签: django

为什么我的表单不会显示在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)

2 个答案:

答案 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}}

呈现表单