Django表单不呈现

2024-06-26 13:35:00 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,提前谢谢你。我有一个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 />
#...

谢谢你的帮助。


Tags: djangofrombrimportforminputmodelsrequest
3条回答

读了答案,你似乎还是运气不好。

尝试在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,也可以捕获异常。这将告诉你更多你需要解决的问题。

我认为转移到泛型类是一个标志:)只需尝试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>

以及非常URL中的简单记录列表.py:

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

使用{{ form.as_table }}或从表单标记周围移除<table></table>

相关问题 更多 >