2017-12-02 317 views
1

我試圖創建一個按鈕,它將在AWS中創建一個S3存儲桶,一旦點擊。當談到Django時,我仍然有點綠色,所以我不知道如何讓它運行。我閱讀了一些教程,但所有這些教程都展示了在單擊按鈕時如何向數據庫添加內容。 這是我迄今所做的:Django使用按鈕創建s3存儲桶

views.py

class createS3(TemplateView): 
template_name = 'project/create_s3.html' 

def get(self, request): 
    form = S3Form() 
    return render(request, self.template_name, {'form': form}) 

def createBucket(self, bucketName): 
    form = S3Form(request.POST) 
    s3 = boto3.resource('s3') 
    if form.is_valid(): 
     name = form.cleaned_data['name'] 
    s3.create_bucket(Bucket=name) 

def post(self, request): 
    form = S3Form(request.POST) 
    if form.is_valid(): 
     name = form.cleaned_data['name'] 
    args = {'form':form, 'name':name} 
    return render(request, self.template_name, args) 

這裏是模板:

{% include "home/_header.html" %} 
{% block content %} 
{% load staticfiles %} 
<div class="mainPage"> 
    <div class="s3Wrapper"> 
     <form method="post"> 
     {% csrf_token %} 
     {{ form.as_p }} 
     <button type="submit" name="create" class="button create">Create</button> 
     </form> 
    </div> 
    </div> 
{% endblock content %} 

現在我的問題是,我如何通過點擊按鈕來調用createBucket功能?或者我需要創建一個新的url並傳遞'name'變量來創建一個新的桶?

謝謝!

回答

3

你爲什麼不這樣做這樣的事情:

def createBucket(self, bucketName): 
    s3 = boto3.resource('s3') 
    s3.create_bucket(Bucket=bucketName) 

def post(self, request): 
    form = S3Form(request.POST) 
    if form.is_valid(): 
     name = form.cleaned_data['name'] 
     self.createBucket(name) 
    ... 
+0

看起來像它的工作,但是當我點擊提交按鈕,我得到'名「createBucket」沒有defined'。這是什麼意思?我已經定義了這個功能,不是嗎? – davidb

+0

假設createBucket()和post()都是同一個類的方法,我更新了代碼。 – jarmod

+0

乾杯!現在我得到另一個錯誤,但我猜這個線程的問題已經解決。至少我現在知道如何使用它。 – davidb