未设置必需的参数名称 - Django + Amazon S3
Required parameter name not set - Django + Amazon S3
我正在尝试为我的 Django 应用程序设置 Amazon S3,但我一直被告知“未设置必需的参数名称”
'.当需要显示图像时,似乎会发生此错误。例如,它在没有图像的主页上工作正常。真的不知道我哪里做错了。我在 settings.py 中进行了以下设置。
INSTALLED_APPS = [
'projects',
'users.apps.UsersConfig',
'crispy_forms',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'storages',
]
#S3 BUCKET CONFIG
AWS_ACCESS_KEY_ID = 'acccess key'
AWS_SECRET_ACCESS_KEY = 'secret access key'
AWS_BUCKET_NAME = 'bucket name'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
完整追溯
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/projects/createListing
Django Version: 2.2
Python Version: 3.7.3
Installed Applications:
['projects',
'users.apps.UsersConfig',
'crispy_forms',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'storages']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template C:\Users\Maksims\Desktop\CA4106-Cloud-Computing\test\src\personal_portfolio\templates\base.html, error at line 10
Required parameter name not set
1 : {% load static %}
2 : <!doctype html>
3 : <html lang="en">
4 : <head>
5 : <!-- Required meta tags -->
6 : <meta charset="utf-8">
7 : <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
8 :
9 : <!-- Bootstrap CSS -->
10 : <link re l="stylesheet" href="https://stack path.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
11 :
12 : {% if title %}
13 : <title>Prestige Worldwide - {{ title }}</title>
14 : {% else %}
15 : <title>Prestige Worldwide - </title>
16 : {% endif %}
17 :
18 : </head>
19 : <body>
20 : <header class="site-header">
Traceback:
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in _resolve_lookup
829. current = current[bit]
During handling of the above exception ('ImageFieldFile' object is not subscriptable), another exception occurred:
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
21. return view_func(request, *args, **kwargs)
File "C:\Users\Maksims\Desktop\CA4106-Cloud-Computing\test\src\projects\views.py" in createListing
35. return render(request, 'createListing.html', {'listing_form': link})
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\shortcuts.py" in render
36. content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\loader.py" in render_to_string
62. return template.render(context, request)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\backends\django.py" in render
61. return self.template.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
171. return self._render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in _render
163. return self.nodelist.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\loader_tags.py" in render
150. return compiled_parent._render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in _render
163. return self.nodelist.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\loader_tags.py" in render
62. result = block.nodelist.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
987. output = self.filter_expression.resolve(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in resolve
671. obj = self.var.resolve(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in resolve
796. value = self._resolve_lookup(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in _resolve_lookup
837. current = getattr(current, bit)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\files.py" in url
62. return self.storage.url(self.name)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\storages\backends\s3boto3.py" in url
620. params['Bucket'] = self.bucket.name
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\storages\backends\s3boto3.py" in bucket
326. self._bucket = self._get_or_create_bucket(self.bucket_name)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\storages\backends\s3boto3.py" in _get_or_create_bucket
363. bucket = self.connection.Bucket(name)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\boto3\resources\factory.py" in create_resource
474. client=self.meta.client)(*args, **kwargs)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\boto3\resources\base.py" in __init__
119. 'Required parameter {0} not set'.format(identifier))
Exception Type: ValueError at /projects/createListing
Exception Value: Required parameter name not set
正如@jordanm2 所说,我有 AWS_BUCKET_NAME
而不是 AWS_STORAGE_BUCKET_NAME
我刚刚将密钥 AWS_STORAGE_BUCKET_NAME = 'bucket-name' 粘贴到 settings.py 文件的顶部,它对我有用。
我正在尝试为我的 Django 应用程序设置 Amazon S3,但我一直被告知“未设置必需的参数名称” '.当需要显示图像时,似乎会发生此错误。例如,它在没有图像的主页上工作正常。真的不知道我哪里做错了。我在 settings.py 中进行了以下设置。
INSTALLED_APPS = [
'projects',
'users.apps.UsersConfig',
'crispy_forms',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'storages',
]
#S3 BUCKET CONFIG
AWS_ACCESS_KEY_ID = 'acccess key'
AWS_SECRET_ACCESS_KEY = 'secret access key'
AWS_BUCKET_NAME = 'bucket name'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
完整追溯
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/projects/createListing
Django Version: 2.2
Python Version: 3.7.3
Installed Applications:
['projects',
'users.apps.UsersConfig',
'crispy_forms',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'storages']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template C:\Users\Maksims\Desktop\CA4106-Cloud-Computing\test\src\personal_portfolio\templates\base.html, error at line 10
Required parameter name not set
1 : {% load static %}
2 : <!doctype html>
3 : <html lang="en">
4 : <head>
5 : <!-- Required meta tags -->
6 : <meta charset="utf-8">
7 : <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
8 :
9 : <!-- Bootstrap CSS -->
10 : <link re l="stylesheet" href="https://stack path.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
11 :
12 : {% if title %}
13 : <title>Prestige Worldwide - {{ title }}</title>
14 : {% else %}
15 : <title>Prestige Worldwide - </title>
16 : {% endif %}
17 :
18 : </head>
19 : <body>
20 : <header class="site-header">
Traceback:
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in _resolve_lookup
829. current = current[bit]
During handling of the above exception ('ImageFieldFile' object is not subscriptable), another exception occurred:
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
21. return view_func(request, *args, **kwargs)
File "C:\Users\Maksims\Desktop\CA4106-Cloud-Computing\test\src\projects\views.py" in createListing
35. return render(request, 'createListing.html', {'listing_form': link})
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\shortcuts.py" in render
36. content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\loader.py" in render_to_string
62. return template.render(context, request)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\backends\django.py" in render
61. return self.template.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
171. return self._render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in _render
163. return self.nodelist.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\loader_tags.py" in render
150. return compiled_parent._render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in _render
163. return self.nodelist.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\loader_tags.py" in render
62. result = block.nodelist.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
987. output = self.filter_expression.resolve(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in resolve
671. obj = self.var.resolve(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in resolve
796. value = self._resolve_lookup(context)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in _resolve_lookup
837. current = getattr(current, bit)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\files.py" in url
62. return self.storage.url(self.name)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\storages\backends\s3boto3.py" in url
620. params['Bucket'] = self.bucket.name
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\storages\backends\s3boto3.py" in bucket
326. self._bucket = self._get_or_create_bucket(self.bucket_name)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\storages\backends\s3boto3.py" in _get_or_create_bucket
363. bucket = self.connection.Bucket(name)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\boto3\resources\factory.py" in create_resource
474. client=self.meta.client)(*args, **kwargs)
File "C:\Users\Maksims\AppData\Local\Programs\Python\Python37-32\lib\site-packages\boto3\resources\base.py" in __init__
119. 'Required parameter {0} not set'.format(identifier))
Exception Type: ValueError at /projects/createListing
Exception Value: Required parameter name not set
正如@jordanm2 所说,我有 AWS_BUCKET_NAME
而不是 AWS_STORAGE_BUCKET_NAME
我刚刚将密钥 AWS_STORAGE_BUCKET_NAME = 'bucket-name' 粘贴到 settings.py 文件的顶部,它对我有用。