我正在尝试使用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>
答案 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>
希望这有帮助。