2017-12-02 288 views
0

我有AWS上的S3存儲桶列表。顯示每個存儲桶的名稱,並試圖使用django實現刪除按鈕。 我遇到的問題是我還不確定如何獲取並傳遞存儲桶名稱變量到我有的刪除函數。這是我到目前爲止已經完成:Django刪除按鈕上的S3存儲桶點擊

DeleteBucketView.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是空的,因爲我不知道我是什麼可以進入那裏。 當我點擊刪除按鈕時,我需要調用函數deleteBucket,但是我需要將bucket的名稱傳遞給該函數。我想我也需要在deleteBucket視圖中定義文章,但我不知道如何從那裏去。 如何將存儲桶的名稱傳遞給函數並使其工作?我需要在deleteBucket.html中添加任何內容嗎?

感謝

回答

1

我不知道很多關於你的網址定義,但我認爲這樣的...

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 %}"> 
+0

雖然我如何調用函數? – davidb

+0

你的意思是調用deleteBucket的權利? –

+0

@davidb我已經更新了我的答案... –