首页 > 解决方案 > Django 访问/操作 CreateView 上传

问题描述

我有一个 CreateView 如下:

class SpaceCreateView(CreateView):
    model = Space
    fields = ['title', 'space_image']

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

我想将 space_image 传递给第 3 方 API 并从那里取回响应。既然我在 CreateView 中设置了这个,我应该怎么做?

标签: pythondjango

解决方案


您可以在基于类的视图中为所需的 3rd 方 API 逻辑定义另一个函数,如下所示:

class SpaceCreateView(CreateView):
    model = Space
    fields = ['title', 'space_image']

    def form_valid(self, form):
        form.instance.author = self.request.user
        api_response = call_api(self, form)
        return (super().form_valid(form), api_response)

    def call_api(self, form):
        image_to_forward = form.space_image
        
        # 3rd party API Request logic
        request_api = [...] # However you have to forward the image to the 3rd party API
        response = [...] # Depends on the way the 3rd party API returns the content
        return (response)

推荐阅读