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

は見えるが、私は送信ボタンを襲ったとき、私は 'name「をcreateBucket」取得defined'ではありません。これは何を意味するのでしょうか?私は以前に関数を定義しましたが、私はしませんでしたか? – davidb

+0

createBucket()とpost()が同じクラスのメソッドであると仮定して、コードを更新しました。 – jarmod

+0

乾杯!今度は別のエラーが出ますが、このスレッドの問題は解決されていると思います。少なくとも私はこれを使う方法を知っています。 – davidb

関連する問題