0

为什么我的表单没有显示在 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')

示例.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 方法(更新数量)

4

2 回答 2

2

你期望这如何工作?如果show呈现模板,a将出现但form不会出现,因此您将获得一组空表单。如果show_f渲染模板,form将存在但a不会,因此 for 循环将没有可迭代的内容,结果将为空。

你到底想做什么?让两个视图渲染同一个模板没有问题,但它们都必须实际提供模板需要渲染的信息。

于 2012-10-10T12:56:54.370 回答
0

如此处所述:https ://docs.djangoproject.com/en/dev/topics/forms/#displaying-a-form-using-a-template

应该使用例如:{{ form.as_ul }} 呈现表单

于 2012-10-10T12:54:38.683 回答