0

私は、ユーザーがフォームの2つのフィールドに2つの数字を入力し、それらを送信して3番目のフィールドで結果を取得する非常に単純なdjangoWebページを作成しようとしています。ModelFormsを使用しています。

今のところ、私は最初の部分にのみ興味があります。そこでは、ユーザーがURLに移動し、空のフォームを含むページが表示されます。次のことを行いますが、ブラウザに表示されるページにはフォームがなく、送信ボタンしかありません。HTMLコードに埋め込もうとしたModelFormがまだ空であるためかどうかはわかりませんが、デフォルト値を指定しようとしましたが、それでも機能しませんでした。どんな助けでも大歓迎です!:)

urls.py:

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

models.py:

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

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

views.py:

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

home.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

モデルでは、forms.CharFieldではなくmodels.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 に答える