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 回答