gpt4 book ai didi

django - CreateView 没有返回 HttpResponse

转载 作者:行者123 更新时间:2023-12-02 08:25:48 25 4
gpt4 key购买 nike

我有以下 View ,它扩展了基本 CreateView:

class PeopleImportCsv(FailedLoginMessageMixin, CreateView):
model = CsvFile
form_class = CustomerCsvImportForm
template_name = 'people/customer_uploadcsv_form.html'

def get_success_url(self):
url = reverse('customer_process_csv', args=[self.object.id])
return url

def form_valid(self, form):
instance = form.save(commit=False)
instance.uploaded_by = self.request.user
super(PeopleImportCsv, self).form_valid(form)

我正在使用 get_success_url() 方法,这样我就可以获取数据库中新创建的对象的 id。但是,当我尝试提交表单时,我收到以下 ValueError 消息:

The view people.views.PeopleImportCsv didn't return an HttpResponse object.

如果我在 get_success_url() 中分配 url 后立即放置一个 assert False ,那么我可以看到它具有我期望的正确 url,那么我该怎么做才能解决这个问题?

最佳答案

您需要从 form_valid 方法获得返回(如果您使用的是ModelForm):

def form_valid(self, form):
instance = form.save(commit=False)
instance.uploaded_by = self.request.user
return super(PeopleImportCsv, self).form_valid(form)

您可以see the methods signature in the Django source

P.S 这里有一个非常有用的网站,用于引用 Django 的许多基于类的 View : http://ccbv.co.uk/

关于django - CreateView 没有返回 HttpResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16689721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com