Python Django表格不';不渲染
你好,先谢谢你。我有一个django表单没有在模板上呈现。“提交”按钮呈现,但表单不呈现。我已经盯着这段代码看了大约6个小时,它可能非常简单,我可能需要另一双眼睛来观察它 我的模型:Python Django表格不';不渲染,python,django,django-forms,Python,Django,Django Forms,你好,先谢谢你。我有一个django表单没有在模板上呈现。“提交”按钮呈现,但表单不呈现。我已经盯着这段代码看了大约6个小时,它可能非常简单,我可能需要另一双眼睛来观察它 我的模型: #models.py from django.db import models from django.forms import ModelForm class DraftInput(models.Model): player_id = models.IntegerField(help_text = '
#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 />
#...
<form method="POST" action=".">
<table>
{% csrf_token %}
{{ form.as_table }}
<input type="submit" />
</table>
</form>
#draft_input.html
#...
草稿输入
草稿
{{form}}
#...
谢谢你的帮助。例如,试试
{{{form.as_p}}
。还有其他捷径。您还可以手动创建表单。查看Django文档:在html文件中尝试“form.as\p”或“form.as\u table”而不是“form”
编辑:查看文档并使用其中一个示例作为模型:
在示例中,您在模型中定义了可能不正确的表单参数。您希望保留特定于表单的修改,例如DraftForm类中的help_文本,现在保留在DraftInput模型中
这是一个简单的问题,你应该从文档中复制一些东西,然后朝着你想要的方向努力
希望这有帮助。使用
{{{form.as_table}
或从表单标签周围删除
我认为这是转向泛型类的一个标志:)只要尝试CreateView类即可
在views.py文件中:
class CreateDraftInputView(CreateView):
model = DraftInput
template_name = "test/draftinput_form.html"
success_url = "/test/listdraft/"
简单创建模板:
#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 />
#...
<form method="POST" action=".">
<table>
{% csrf_token %}
{{ form.as_table }}
<input type="submit" />
</table>
</form>
阅读答案线索,你似乎仍然运气不佳 尝试在django交互式shell(
python manage.py shell
)中执行这些命令。在尝试格式化表单时,可能会引发异常。当模板中的表单生成过程中抛出异常时,在HTML中不会看到太多;但django贝壳通常会揭穿罪犯
python manage.py shell
In [1]: from simple.models import DraftForm
In [2]: form = DraftForm()
In [3]: form.as_p()
您可以看到此处生成的HTML,也可以捕获异常。这将告诉您更多有关需要修复的内容。无法快速找到根本原因,但只有在变量声明遵循传统的
module.Class
表单时,“我的表单”中的字段才会显示。问题可能在类加载顺序的某个地方
from simple import models
# ...
form = models.DraftForm()
您是否查看了源代码以查看显示的内容?我遇到了这个问题,因为我忘了调整我的
url.py
以使用新视图。它进一步使用了我临时添加的TemplateView。这不起作用…我太有希望了…我使用了{{form.as_table}
并保留了
标签谢谢!!!在尝试了您的建议并阅读了文档之后,我仍然无法让我的代码正常工作。你还有其他建议吗?我厌倦了使用{{{form.as_p}}
没有乐趣。我现在要看看你推荐的那些文件。非常感谢。在阅读了文档之后,我仍然无法让代码正常工作。您还有其他建议吗?您可以安装django调试工具栏并检查表单是否呈现到上下文中。有人认为泛型视图比泛型类好:)在尝试了您的建议并阅读了文档后,我仍然无法让代码正常工作。你还有其他建议吗?@dpbklyn在我的回答中补充了一些信息。祝你好运