2013-03-25 70 views
0

我正在嘗試做一個非常簡單的django網頁,其中用戶用兩個數字填充表單的兩個字段,提交它們並在第三個字段中獲取結果。我正在使用ModelForms。Django將ModelForm顯示爲html表格

目前我只對第一部分感興趣,其中用戶導航到網址,並提示帶有空格式的頁面。我做了以下操作,但我在瀏覽器中看到的頁面沒有表單,只有提交按鈕。我不知道這是因爲我試圖嵌入在HTML代碼中的ModelForm仍然是空的,但我試圖給它默認值,它仍然沒有工作。 任何幫助將不勝感激! :)

urls.py:

urlpatterns = patterns('', 
    url(r'^calculator/', views.calculate) 
) 

models.py:

class Calc(models.Model): 
    field1 = forms.CharField() 
    field2 = forms.CharField() 
    field3 = forms.CharField() 

class CalcForm(ModelForm): 
    class Meta: 
     model = Calc 

views.py:

def calculate(request): 
    c = CalcForm() 
    if request.method == 'POST': 
     #do the math 
     #return ... 
    else: 
     return render_to_response('home.html', {'calculator': c}) 

home.html的:

<form action="/calculator/" method="post"> 
<table> 
{{ calculator }}<!--I also tried .as_p, .as_ul...--> 
</table> 
<input type="submit" value="Submit" /> 
</form> 
+1

你有沒有貼實際的代碼?一切看起來正確。 – Rohan 2013-03-25 12:19:21

回答

0

變化如下:

class Calc(models.Model): 
    field1 = forms.CharField() 
    field2 = forms.CharField() 
    field3 = forms.CharField() 

class Calc(models.Model): 
    field1 = models.CharField(max_length=10) 
    field2 = models.CharField(max_length=10) 
    field3 = models.CharField(max_length=10) 

你有沒有syncdb與上面的代碼?因爲如果你願意的話,它一定會拋出一個錯誤。這讓我想如果你的數據庫有正確的表。確保您在syncdb之後進行上述更改。

此外,您應經常檢查,如果一個實例存在,這也將幫助您解決,如果對象是正確的通過與否:

{% if calculator %} 
    <h3>Calculation Form</h3> 
    <form action="/calculator/" method="post"> 
     <table> 
      {{ calculator }} 
     </table> 
     <input type="submit" value="Submit" /> 
    </form> 
{% endif %} 
+1

+1,但模板更改爲-1。沒有理由檢查你使用的每個變量的存在。 – 2013-03-25 13:43:24

+0

是最好不是所有的變量,但爲你的模板創建主要的變量。 – Amyth 2013-03-25 14:06:37

+0

非常感謝,它爲我做了詭計!當試圖同步我的代碼時,我發現了錯誤,並通過使用models.CharField(max_length = 10)對其進行了更正 – toni 2013-03-26 07:31:01

0

您的模型應該使用models.CharField,而不是forms.CharField。

+0

你是對的,謝謝!第一部分爲 – toni 2013-03-26 07:37:49