0

次のようにDjangoでフォームを作成しました:

class advancedsearch(forms.Form):
    choices = forms.ChoiceField (label="choices", choices = ("1", "2", "3"), required= False)

今、私は次のようにビューでこれを使用しようとしています:

def advancedsearch(request):
    # if request.method == "POST":
    #   search = advancedsearch(request.POST, request.FILES)
    #   if search.is_valid():
    #       return HttpResponseRedirect(reverse("view.designs")) #    UPDATE REDIRECT
    #   else:
    #       print "FORM IS NOT VALID"
    #     # GET request
    # else:
    #   search = advancedsearch()
    #   return render_to_response("advancedsearch.html", {
    #       "search": search,
    #       }, context_instance=RequestContext(request,{}))
    # # generic case
    search = advancedsearch()
    return render_to_response("advancedsearch.html", {
        "search": search,
        }, context_instance=RequestContext(request, {}))

私が得ているエラーはadvancedsearch() takes exactly 1 argument (0 given)

関数に引数を渡す必要があるとは思いませんでしたが、そうみたいです...何を渡す必要がありますか?

4

2 に答える 2

1

search = advancedsearch()advancedsearch()フォームではなくビューメソッドと呼ばれます

次のようなことができます。

class AdvancedSearchForm(forms.Form):
    choices = forms.ChoiceField (label="choices", choices = ((1, 1),(2, 2),(2, 3)), required= False)

そしてビューで:

search = AdvancedSearchForm()

これで問題が解決するはずです。

于 2013-05-07T20:00:14.773 に答える
1

フォームとビューに同じ名前を付けました。したがって、ビューはそれを止めるものなしに再帰的にそれ自体を呼び出しています。

フォームは引数を必要としませんが、ビューはモデルと同じ名前を持っているため、Python は引数が必要なビューを呼び出したいと考えます。

モデルまたはビューの名前を変更する必要があります。

于 2013-05-07T19:52:06.357 に答える