Django表单显示为隐藏

时间:2014-12-09 01:20:24

标签: python django forms django-csrf

我正在用表格做一些工作,我相信我做错了什么,我的表格现在没有显示,我做了4个不同的页面,每个页面都有不同的表格。

当我打开页面并检查页面来源时,表单的输入显示为

<form role="form" method = 'post'><input type='hidden' name='csrfmiddlewaretoken' value='4VlAtXgpblSSq5tkugStVWKWYtZ6rd8A' />



<input type='submit'>
</form>

type =&#39;隐藏&#39;如你看到的。这些是我的观点:

def add_venta(request):
    ventaForm = VentaForm(request.POST or None)
    if ventaForm.is_valid():
        save_it = ventaForm.save(commit=False)
        save_it.save()
        return redirect("/venta/")
    return render_to_response("venta.html",locals(),context_instace=RequestContext(request))

def add_compra(request):
    rotate_token(request)
    compraForm = CompraForm(request.POST or None)
    if compraForm.is_valid():
        save_it = compraForm.save(commit=False)
        save_it.save()
        return redirect("/compra/")
    return render_to_response("compra.html",locals(),context_instance=RequestContext(request))

def add_accion(request):
    accionForm = AccionForm(request.POST or None)

    if accionForm.is_valid():
        save_it = accionForm.save(commit=False)
        save_it.save()
        return redirect("/accion/")
    return render_to_response("accion.html",locals(),context_instance=RequestContext(request))

def add_banco(request):
    bancoForm = BancoForm(request.POST or None)
    if bancoForm.is_valid():
        save_it= bancoForm.save(commit=False)
        save_it.save()
        return redirect("/banco/")

    return render_to_response("banco.html",locals(), context_instance=RequestContext(request))

每个视图的.html文件

banco.html

<form role="form" method = 'post'>{% csrf_token %}

    {{ banco.as_p }}

<input type='submit'>

compra.html

<form role="form" method = 'post'>{% csrf_token %}

    {{ compra.as_p }}

<input type='submit'>

venta.html

<form role="form" method = 'post'>{% csrf_token %}

    {{ venta.as_p }}

<input type='submit'>

accion.html

<form role="form" method = 'post'>{% csrf_token %}

    {{ accion.as_p }}

<input type='submit'>

1 个答案:

答案 0 :(得分:0)

您需要在模板中使用与视图中相同的变量名称。

例如,在视图中

ventaForm = VentaForm(request.POST or None)

所以在模板中你应该使用

{{ ventaForm.as_p }}

您问题中的隐藏输入来自csrf令牌。这是一个安全功能,可以隐藏。