在django中使用POST传递变量

时间:2017-05-24 12:06:24

标签: python html django

我正在尝试使用POST将表单中的名称传递到django中的视图。执行中没有错误,但它没有从模板中传递任何内容,也不知道我在这里做错了什么。我从django开始,所以我可以有新手错误。如果您需要更多信息,请告诉我。

Views.py

def crear_pdf(request):
    empresa_selec = ""
    form = EmpModelForm()
    if request.method == 'POST':
        form = EmpModelForm(data=request.POST)
        if form.is_valid():
            empresa_selec = form.cleaned_data['nombre']

   #"empresa_selec" that's the empty variable

Models.py

class Empresa_modelo(models.Model):
    nombre = models.CharField(max_length=100,blank=True,null=True)

Forms.py

    class EmpModelForm(forms.ModelForm):
        class Meta:
            model = Empresa_modelo
            fields = ["nombre"]

template.html

 <div class="container-fluid">
            <form method="POST" enctype="multipart/form-data" action="{% url 'crear_pdf' %}">{% csrf_token %}
                <p>Empresa</p>
                <input type="text" name="empresa">
                <br>
                <button type="submit">Subir</button>
            </form>
            <br>
            <a class="btn btn-primary" href="{% url 'crear_pdf' %}">Atras</a>
        </div>

3 个答案:

答案 0 :(得分:2)

您的模板中没有名为nombre的字段;你只有empresa

这可能是因为您没有在模板中输出EmpModelForm。您未在视图中显示render来电,但假设您将其作为form传递,则只需在模板中执行{{ form.as_p }}

答案 1 :(得分:0)

尝试使用:

<input type="text" name="nombre">

没有名为empresa的字段。

答案 2 :(得分:0)

看一下您的代码,有几个问题。首先,您没有使用模板中forms.py文件中定义的模型表单。其次,您已经定义了一个输入文本框,其中包含您未在视图中引用的名称。您可以使用模型表单,也可以在视图中使用输入文本框的相同名称。

def crear_pdf(request):
empresa_selec = ""
form = EmpModelForm()
if request.method == 'POST':
    form = EmpModelForm(data=request.POST)
    if form.is_valid():
        empresa_selec = form.cleaned_data['nombre']
else:
    return render(request,"template.html",{"form":form})

在您的模板中,您可以编辑:

<div class="container-fluid">
        <form method="POST" enctype="multipart/form-data" action="{% url 'crear_pdf' %}">{% csrf_token %}
            {{ form.as_p }}
            <br>
            <button type="submit">Subir</button>
        </form>
        <br>
        <a class="btn btn-primary" href="{% url 'crear_pdf' %}">Atras</a>
    </div>

希望这有帮助。