Django删除按钮cli上的S3 bucket

2024-10-01 22:25:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在AWS上有一个S3桶的列表。每个bucket的名称都会显示出来,我正在尝试使用django实现一个delete按钮。 我遇到的问题是,我还不确定如何获取bucket name变量并将其传递给delete函数。以下是我迄今为止所做的:

删除BucketView.py

class deleteBucket(TemplateView):
template_name = "project/delete_bucket.html"

def deleteBucket(self, name):
    s3 = boto3.resource('s3')
    bucket = s3.Bucket(name)
    bucket.delete()

S3.html文件

<div class="s3Items">
  {% for bucket in buckets %}
  <div class="s3Name">
    <div id="left">
      <a href="#"><h4 id='s3ItemName'>{{ bucket.bucketName }}</h4></a>
    </div>
    <div id="right">
      <ul id='s3ItemDesc'>
        <li>{{ bucket.createdAt }}</li>
          <li>{{ bucket.totalSize }}/4GB</li>
        <li>
          <form method="post" action="{% url 'project:deleteBucket' %}">
            {% csrf_token %}
            <button type="submit" name="button" class='button delete'>Delete</button>
          </form>
        </li>
      </ul>
    </div>
</div>
{% endfor %}

deletebucket.html为空,因为我不确定在那里可以输入什么。 我需要在单击delete按钮时调用函数deleteBucket,但是我也需要将bucket的名称传递给函数。我想我还需要在deleteBucket视图中定义post,但我不知道如何从那里开始。 如何将bucket的名称传递到函数中并使其工作?是否需要在deleteBucket.html中添加任何内容

谢谢


Tags: 函数namediv名称ids3buckethtml
1条回答
网友
1楼 · 发布于 2024-10-01 22:25:59

我不太了解你的网址定义,但我假设这样

url(r'^delete-bucket/(?P<name>\w+)$', 'views.deleteBucket.as_view()', name='delete_bucket'),

像这样修改你的视图

class deleteBucket(TemplateView):
    template_name = "project/delete_bucket.html"

    def delete_operation(self, name):
        s3 = boto3.resource('s3')
        bucket = s3.Bucket(name)
        bucket.delete()

    def post(self, request, name):
        self.delete_operation(name)
        ...

在html中你必须说出名字

<form method="post" action="{% url 'project.delete_bucket' name=bucket.bucketNmae %}">

相关问题 更多 >

    热门问题