2017-05-24 12 views
0

こんにちは私はフォームからdjangoのビューにPOSTを使って名前を渡そうとしています。実行にエラーはありませんが、テンプレートから何も渡されず、ここで何か間違っているかどうかはわかりません。私は初心者のエラーを持つことができますので、私はdjangoから始まっています。もっと情報が必要な場合は、私に教えてください。djangoでPOSTで変数を渡す

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.h TML

<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

あなたは 'crear_pdf'ビューのURLルールを表示できますか? – doru

+0

あなたはここのテンプレートであなたのフォームを実際に使用していません。ドキュメントのチュートリアルに従ってください。 https://docs.djangoproject.com/en/1.11/topics/forms/#the-view –

+0

フォームデータが無効な場合、ビュー機能では何もしません。何が起こっているのかを理解するには、 '.is_valid()'ブロックの後に次のようなものを追加することができます: 'else:print( 'invalid data'、request.POST)' –

答えて

0

使用してみてください:

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

Empresaメールという名前のフィールドがありません。

2

テンプレートに​​というフィールドがありません。あなたはempresaしか持っていません。

おそらく、テンプレートにEmpModelFormが出力されていないためです。ビュー内にrenderコールが表示されませんが、formとして渡すと仮定すると、テンプレート内には{{ form.as_p }}と表示されます。

+0

ああ、本当にありがとう、ロット!! –

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> 

は、この情報がお役に立てば幸いです。

関連する問題