1

HttpResponseこれは、明らかにを返さないコード パスがビューにある場合に発生することがわかっています。私はdjangoを初めて使用するので、これは完全に間違っている可能性があります。

FormView コードは次のとおりです。オーバーライドする必要がありますrender_to_responseか?

class AddAdvertView(FormView):
    form_class = NewAdForm

    def get(self, *args, **kwargs):
            self.campaign = get_object_or_404(Campaign, id__exact = self.kwargs['campaign_id'])

    def post(self, request, *args, **kwargs):
            pass

    def get_form(self, form_class):
            return form_class(initial = {}, campaign = self.campaign)

    def get_success_url(self):
            return self.request.META.get('HTTP_REFERER', None)

    def form_valid(self, form):
            return HttpResponse('form valid')

    def form_invalid(self, form):
            return HttpResponse('form invalid')
4

2 に答える 2

5

これはおそらくあなたがあなたのget方法に望むものです:

 def get(self, *args, **kwargs):
     campaign = get_object_or_404(Campaign, id=self.kwargs['campaign_id'])
     ctx = self.get_context_data()
     ctx['campaign'] = campaign
     return self.render_to_response(ctx)

で何もしていない場合はpost、それをオーバーライドするメソッドはありません。同様に、をオーバーライドする必要はありませんget_form

クラスベースのビューはdjangoの新機能であり、それらのドキュメントは他のコンポーネントと同等ではありません。うまくいけば、これはすぐに変わるでしょう。今のところ、クラスベースのビューがどのように機能するかを知るのに最適な場所は、ミックスインが提供するものを調べることです。

の場合、FormViewミックスインはFormMixinProcessFormView

于 2012-05-31T06:37:59.263 に答える
2

少なくともpostとメソッドから何かを返す必要があります。コードでは、属性を作成しただけで (空のフォームを返す必要があります)、何も実行しません (フォームを処理する必要があります)。を再定義して、メソッドでキャンペーンを取得する必要はないようです(を呼び出すことを忘れないでください)getsuper(AddAdvertView, self).get(*args, **kwargs)getpostpostgetdispatchsuper(AddAdvertView, self).dispatch(dispatch arguments)

于 2012-05-31T06:07:57.123 に答える