【发布时间】:2025-12-13 06:45:01
【问题描述】:
我正在使用curl 向我的网站提交表单数据。
curl -F some_file=@file.txt -F name=test_01 https://localhost:8000
它不是 API,但我需要一个充当 API 的端点。我在这里有点超出我的深度,所以我希望有人可以帮助我。
我已经设置并运行了模型以及CreateView:
class CreateFile(CreateView):
model = SomeFile
fields = ['name', 'some_file', . . .]
当我向指定的 URL (/file/request) 发送带有上述 curl 的 POST 请求时,该对象在数据库中创建并且我得到响应(例如,/thanks 现在是来自的 HTTP 响应模板视图)。但是由于非浏览器会发送这个请求,我希望用一些 JSON 来响应。可能带有对象的名称、状态等。
我尝试了一些结果好坏参半的事情...例如,如果我使用 View 而不是 CreateView,我可以返回 JSON,但我真的很喜欢 CreateView CBV 的易用性和便利性,所以我希望我能以这种方式做我想做的事。
我该怎么做?我发现了一个提供一些线索的问题:How do I return JSON response in Class based views, instead of HTTP response
但这涉及浏览器中的典型表单/视图模型。如果我必须重写 post 方法,那么获取表单数据以便创建对象的最佳方法是什么?即使我不处理呈现的表单,我是否需要一个表单类?
【问题讨论】: