Django使用按钮创建s3存储桶
问题描述:
我试图创建一个按钮,它将在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'变量来创建一个新的桶?
谢谢!
答
你为什么不这样做这样的事情:
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)
...
看起来像它的工作,但是当我点击提交按钮,我得到'名“createBucket”没有defined'。这是什么意思?我已经定义了这个功能,不是吗? – davidb
假设createBucket()和post()都是同一个类的方法,我更新了代码。 – jarmod
干杯!现在我得到另一个错误,但我猜这个线程的问题已经解决。至少我现在知道如何使用它。 – davidb