2017-12-02 322 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