您好,并提前感谢您。我有一个不在模板上渲染的django表单。 “提交”按钮呈现,但表单没有。我一直盯着这个代码大约6个小时,它可能很简单,我可能需要另外一双眼睛。
我的模特:
#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 />
#...
感谢您的帮助。
答案 0 :(得分: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,也可以捕获异常。这将告诉您有关需要修复的内容的更多信息。
答案 1 :(得分:2)
使用{{ form.as_table }}
或从表单标记中删除<table></table>
。
答案 2 :(得分: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"))
答案 3 :(得分:0)
以{{ form.as_p }}
为例。还有其他快捷方式。您也可以手动创建表单。查看Django文档:https://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs
答案 4 :(得分:0)
在你的html文件中尝试“form.as_p”或“form.as_table”而不只是“form”。
编辑:查看文档并将其中一个示例用作模型:https://docs.djangoproject.com/en/dev/topics/forms/modelforms/
在您的示例中,您在模型中定义表单参数,这可能不正确。您希望保留表单特定的修改,例如DraftForm类中的help_text,现在在DraftInput模型中。
这是一个简单的问题,你应该从文档中复制一些内容,然后按照你想要的方式工作。
希望这有帮助。
答案 5 :(得分:0)
无法快速找到根本原因,但是仅当变量声明遵循常规的module.Class
形式时,我的表单中的字段才会显示。问题可能在类加载顺序中。
from simple import models
# ...
form = models.DraftForm()