2016-08-15 117 views
0

Django newb在這裏,但我在學習。Django表單,用戶輸入字段不在模板中呈現

問題陳述

輸入字段在HTML模板不渲染。

輸出在瀏覽器中

|提交按鈕|

相關代碼

forms.py 
from django import forms 
from django.db import models 

class PostNotes(forms.Form): 
    clientid = models.IntegerField() 
    notetext = models.CharField(max_length=1000) 

-

views.py 
def post_form_notes(request): 
    if request.method == 'GET': 
     sawit = True 
     form = PostNotes(initial={'notetext':'This is a sample note'}) 
    else: 
     sawit = False 
     pass 
    return render(request, 'clientadmin/post_form_notes.html', { 
     'form': form, 
     'sawit': sawit, 
    }) 

-

post_form_notes.html 
{{ sawit }} 
<form action="" method="post">{% csrf_token %} 
    {{ form.as_p }} 
    <input type="submit" value="Submit" /> 
</form> 

故障已經完成

  • 我已經從瀏覽器中退出了相當數量的代碼(具體而言,如果我看到 POST)請求。不用找了。
  • 我還包括一個變量,以確保我看到GET請求以及模板變量正在工作。我得到True的輸出。
  • 儘可能簡化Form類。
+0

馬特,感謝您的回覆,並且我認爲您所發生的事情是正確的。我創建一個對象並將其傳遞給模板。我相信,as_p過濾器應該將其轉換爲來自對象的代表性對象。但是,由於它不起作用,我當然不確定這是否正確。遵循(或多或少)這個例子。 http://pythoncentral.io/how-to-use-python-django-forms/ – PerryDaPlatypus

回答

0

我修改了forms.py以使用我已經擁有的DB​​模型。

forms.py:

from django.forms import ModelForm 
from clientadmin.models import notes 

class PostNotes(ModelForm): 
    class Meta: 
     model = notes 
     fields = ['notedate', 'notetext'] 

我還修改了views.py不設置初始值,所以該函數使用,而不是什麼提出以下。

models.py:

def post_form_notes(request): 
    if request.method == 'GET': 
     form = PostNotes() 
    else: 
     pass 
    return render(request, 'clientadmin/post_form_notes.html', { 
     'form': form, 
    }) 

希望這有助於這是有同樣的問題我是......

參考以下網址瞭解更多信息的人:https://docs.djangoproject.com/en/1.10/topics/forms/modelforms/

相關問題