现在我'm working on deleting files from s3 at django admin page. I would like to delete files in s3 when I click '删除' button that I added as a custom button. The '删除'按钮位于django管理员首页的文件下载链接旁边,如下面的链接(图片)所示:custom UI screenshot

  • (步骤1)当我单击'remove'按钮时,

  • (步骤2)我想让前端管理页面向使用boto3库的后端Web服务器发送请求 .

  • (步骤3)一旦请求到达后端,我希望boto3与S3通信,以便在S3端删除所请求的文件 .

  • (步骤4)然后,S3应该回复boto3,说完请求的删除操作 .

为了实现这些步骤,我认为我需要在Web服务器端定义/实现一个接口,并使“删除”按钮上的监听器向我创建的Web服务器端接口发送请求 . 但是,我找不到办法这样做 . 我可以就此问题获得一些帮助的建议或文件吗?

在这里,我给你admin.py文件的相应代码部分 . FileUploadWidget有'upload.html'作为模板 .

class FileUploadWidget(forms.Widget):
template_name = 'upload.html'

def render(self, name, value, attrs=None, renderer=None):
    context = {
        'name': name,
        'data': value,
        ...
    }

    return mark_safe(render_to_string(self.template_name, context))

下面的MyAdmin使用上面的FileUploadWidget:

class MyAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
    files_widget = FileUploadWidget()

    form = super().get_form(request, obj, widgets={ 'files': files_widget }, **kwargs)
    return form

以下是'upload.html'文件的相应部分:

<div>
  ...
  <div>
    <label>Uploaded files: </label>
    <div id="uploaded_files">
      <a href="...">...</a> <button class="btn_remove">Remove</button>
    </div>
  </div>
</div>