0

我正在尝试做一个非常简单的 django 网页,其中用户用两个数字填写表单的 2 个字段,提交它们并在第三个字段中获得结果。我正在使用模型表单。

目前我只对第一部分感兴趣,用户导航到 url 并被提示一个带有空表单的页面。我执行以下操作,但我在浏览器中看到的页面没有表单,只有提交按钮。我不知道是不是因为我尝试嵌入到 html 代码中的 ModelForm 仍然是空的,但是我尝试给它默认值,但它仍然没有工作。任何帮助将不胜感激!:)

网址.py:

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

模型.py:

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

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

视图.py:

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

主页.html:

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

2 回答 2

0

您的模型应该使用 models.CharField,而不是 forms.CharField。

于 2013-03-25T12:20:02.200 回答
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 %}
于 2013-03-25T12:25:02.217 回答