从html POST捕获形成Django中的模型

时间:2016-09-22 20:04:18

标签: python django forms input hidden

真相我是django的新手,我想知道如何使用request.POST ['address']捕获输入类型的值=隐藏在django的视图中,以便它可以输入在这种情况下我的模型中的值我想填充我的字段方向但是没有收到任何数据在数据库中显示为空。这是我到目前为止的代码:

views.py

def formularioLleno(request):
    form = InformationForm()
    if request.method == 'POST':
        form = InformationForm(request.POST or None)
        if form.is_valid():
            form.ubicacion = request.POST['direccion']
            form.save()
            #return redirect('formas.index')
            return HttpResponseRedirect(reverse('index'))
        else:
            form = InformationForm()
    data = {
       'form': form,
    }
    return render_to_response('forma_form.html', data, context_instance=RequestContext(request))

forms.py

from django import forms
from .models import forma
class InformationForm(forms.ModelForm):

    class Meta:
        model = forma
        fields = ('nombre', 'telefono')

models.py

class forma(models.Model):
    nombre = models.CharField(verbose_name='nombre', max_length=50, unique=False)
    telefono = models.CharField(verbose_name='telefono', max_length=10, unique=False)
    ubicacion = models.CharField(verbose_name='ubicacion', max_length=15, unique=False)

forma_form.html

<div id="formularios">
{% block form_content %}
    <form action="" method="POST">
        {% csrf_token %}
        {{ form.as_p }}
        <div id="ubicacion"></div>
        <input type="hidden" id="direccion" name="direccion" value="hello">
        <button type="submit" onclick="alerta()">Contactar</button>
    </form>

{% endblock form_content %}

1 个答案:

答案 0 :(得分:0)

您没有看到输入的原因是表单字段&#34; direccion&#34;不是InformationForm类的成员。当您使用form = InformationForm(request.POST or None)从请求加载数据时,不会捕获direccion字段。

我建议在InformationForm表单(direccion)中添加新成员,并将窗口小部件设置为HiddenInput(在此处详细了解窗口小部件:https://docs.djangoproject.com/en/1.10/ref/forms/widgets/

这会将输入隐藏在表单上,​​但会将信息传递回View。然后,您可以从模板中删除硬编码的隐藏输入HTML。