2016-09-22 93 views
2

事实我是新来的Django,我想知道如何捕获输入类型的值=隐藏在Django视图中,使用request.POST [ 'address'],这样它可以在我的模型中输入一个值,在这种情况下,我想填充我的字段方向,但不会收到数据库中显示的任何数据为空。这是我的代码至今:在Django中从一个HTML POST捕获窗体模型捕获

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 %} 

+0

请修复代码中的缩进错误。 – ozgur

+0

感谢它的准备 –

+0

您的表单类'InformationForm(...)'明确指出只有两个字段应该显示 –

回答

0

你看不到输入的原因是,表单字段“direccion”是不是类InformationForm的成员。当您使用form = InformationForm(request.POST or None)从请求中加载数据时,direcion字段未被捕获。

我会建议增加一个新成员InformationForm形式(direccion),以及小部件设置为HiddenInput(阅读更多关于小工具在这里:https://docs.djangoproject.com/en/1.10/ref/forms/widgets/

该保持输入隐藏窗体上,但会通过信息返回到视图。然后,您可以从模板中删除硬编码的隐藏输入HTML。

+0

您好迈克尔与这个问题是,我用Javascript修改该输入的值,所以我想获得该值,并将其放在位置属性模型 –

+0

您仍然可以修改通过javascript隐藏输入的值,因为ID仍然可以访问(ID将是表单类中字段的名称)。 – Michael

+0

您也可以直接从request.POST访问信息,而不是依靠Form构造函数为您提供该信息。 https://docs.djangoproject.com/en/1.10/ref/request-response/#django.http.QueryDict – Michael