2012-03-15 89 views
0

你好,先謝謝你。我有一個不在模板上呈現的django表單。 「提交」按鈕呈現,但表單不。我一直盯着這個代碼約6個小時,這可能是非常簡單的事情,我可能需要另一雙眼睛。Django窗體不顯示

我的模型:

#models.py 

from django.db import models 
from django.forms import ModelForm 

class DraftInput(models.Model): 
    player_id = models.IntegerField(help_text = 'Input Player ID Number', max_length = 5) 

    def __unicode__(self): 
     return self.player_id 

class DraftForm(ModelForm): 
    class Meta: 
     model = DraftInput 

我的觀點:

#views.py 

from django.shortcuts import render_to_response 

from simple.models import DraftInput 
from simple.models import DraftForm 

from django.template import RequestContext 

#...  

def draft_view(request): 

    if request.method == 'POST': 
     form = DraftForm(request.POST) 
     if form.is_valid(): 
      form.save() 
    else: 
     form = DraftForm() 

    return render_to_response('simple/draft_input.html', {'form': form}) 

我的模板:

#draft_input.html 

#... 

     <h1>Draft Input</h1> 
     <h2>Draft</h2><br /><br /> 
      <form method="POST" action=""> 
      <table>{{ form }}</table> 
      <input type="submit" value="Draft Player" /> 
     </form><br /><br /> 
#... 

謝謝您的幫助。

+1

您是否查看源代碼以查看顯示的內容? – 2012-03-15 21:16:55

+0

我有這個確切的問題,因爲我忘了修改我的'urls.py'來使用新視圖。它進一步使用了我在那裏臨時添加的TemplateView。 – moooeeeep 2014-06-17 10:05:15

回答

0

嘗試{{ form.as_p }}例如。還有其他捷徑。您也可以手動創建表單。看看Django Docs:https://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs

+0

我厭倦了使用'{{form.as_p}}'沒有快樂。我將檢查你現在推薦的文檔。謝謝! – dpbklyn 2012-03-15 22:08:23

+0

閱讀文檔後,我仍然無法讓我的代碼正常工作。你有什麼其他的建議? – dpbklyn 2012-03-16 12:04:16

+0

你可以安裝django調試工具欄並檢查表單是否被渲染到上下文中。 – Jingo 2012-03-16 12:35:53

0

嘗試使用「form.as_p」或「form.as_table」,而不是隻在您的html文件中使用「form」。

編輯:簽出的文檔,並使用自己的例子作爲模型之一:https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

在你的榜樣,你在你的模型,這可能是不正確定義表單參數。您希望保留表單特定的修改,例如DraftForm類中的help_text,現在位於DraftInput模型中。

這是一個簡單的問題,您應該從文檔中複製某些內容,然後朝着您想要的方向工作。

希望這會有所幫助。

+0

嘗試所有3沒有運氣。謝謝! – dpbklyn 2012-03-15 22:08:53

+0

在嘗試了您的建議並閱讀文檔後,我仍然無法讓我的代碼正常工作。你有什麼其他的建議? – dpbklyn 2012-03-16 12:05:25

+0

@dpbklyn在我的回答中增加了更多信息。祝你好運。 – zallarak 2012-03-16 16:31:26

2

請使用{{ form.as_table }}或從表單標記周圍刪除<table></table>

+0

這並沒有工作...我是這麼希望...我用'{{form.as_table}}'並保持'

'標籤感謝你! – dpbklyn 2012-03-15 22:07:42

+0

在嘗試了您的建議並閱讀文檔後,我仍然無法讓我的代碼正常工作。你有什麼其他的建議? – dpbklyn 2012-03-16 12:04:54

1

我認爲這是遷移到泛型類的標誌:)只要嘗試CreateView的

在你views.py文件:

class CreateDraftInputView(CreateView): 
    model = DraftInput 
    template_name = "test/draftinput_form.html" 
    success_url = "/test/listdraft/" 

簡單的創建模板:

<form method="POST" action="."> 
    <table> 
    {% csrf_token %} 
    {{ form.as_table }} 
    <input type="submit" /> 
    </table> 
</form> 

urls.py記錄的簡單列表:

, (r"^listdraft/$", ListView.as_view(model = DraftInput, template_name = "draftinput_list.html")) 
+0

有人認爲泛型視圖比泛型類更好:) – 2012-03-16 08:21:09

6

閱讀答案主題,看起來你還是不走運。

嘗試在django交互式shell(python manage.py shell)中執行這些命令。當您嘗試格式化表單時,可能會引發異常。當模板中的表單生成過程中引發異常時,您在HTML中看不到多少內容;但是django shell通常會揭露罪魁禍首。

python manage.py shell 

In [1]: from simple.models import DraftForm 

In [2]: form = DraftForm() 

In [3]: form.as_p() 

您可以在這裏看到生成的HTML,或將捕獲異常。這會告訴你更多你需要解決的問題。