在Django管理中添加自定义操作按钮

时间:2018-12-09 08:34:29

标签: django amazon-s3

现在,我正在django管理页面上从s3删除文件。 当我单击添加为自定义按钮的“删除”按钮时,我想删除s3中的文件。 “删除”按钮位于django管理员首页的文件下载链接旁边,如以下链接所示(图像): custom UI screenshot

  • (第1步)当我单击“删除”按钮时,
  • (第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>

0 个答案:

没有答案