【问题标题】:CreateView + redefinition of form_valid = didn't return an HttpResponse objectCreateView + 重新定义 form_valid = 没有返回 HttpResponse 对象
【发布时间】:2016-08-13 10:41:04
【问题描述】:

Django 1.10强文本

你能帮我理解为什么会这样吗:

视图 wiki.views.WikiCreate 没有返回 HttpResponse 对象。它返回 None 。

post:我在重新定义 post 方法时没有干扰继承链。我只是截取了url中的参数。

form_valid:我返回了 HttpResponse。但似乎后来在某个地方消失了。

urlpatterns = [
    url(r'^(?P<model>[-\w]+)/(?P<pk>\d+)/wiki/create/$', WikiCreate.as_view(), name='wiki_create'),
]



class WikiCreate(CreateView):
    model = Wiki
    fields = ['article']

    def post(self, request, *args, **kwargs):
        #For wiki history.
        self.author = request.user

        # Parameters from url reflect fields not shown to user.
        self.related_model = kwargs.get('model')
        self.related_object_id = kwargs.get('pk')

        super(WikiCreate, self).post(request, *args, **kwargs)

    def form_valid(self, form):
        """
        Only "article" field was shown to tue user.
        Now we save fields that were not explicitly shown (but were in the url).
        """
        self.object = form.save(commit=False)
        self.object.related_model = self.related_model
        self.object.related_id = self.related_object_id
        self.object.save()
        return HttpResponseRedirect(self.get_success_url())

【问题讨论】:

    标签: django django-views django-generic-views


    【解决方案1】:

    您没有从post 中的超级调用返回响应。

    请注意,重写该方法很少是一个好主意,而且您当然不需要在这里。您可以直接在 form_valid 中访问这些 kwargs。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      相关资源
      最近更新 更多