将上传的文件传输到AWS S3存储桶后无法加载静态文件

时间:2019-06-07 15:32:59

标签: python-3.x amazon-web-services amazon-s3 django-templates django-views

好的,我正在使用Python Django。我正在尝试部署我的应用程序。但是首先,我想传输我的媒体文件(用户在其中上传图片,例如前个人资料图片)。但是现在,我制作了一个S3存储桶,并将媒体文件传输到了存储桶。 不幸的是,我在模板渲染期间需要使用{%load static%}加载的所有静态文件都无法加载。它抛出错误。

这是我的回溯:-

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/profile/

Django Version: 2.2
Python Version: 3.7.3
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'crispy_forms',
 'social_django',
 'cart.apps.CartConfig',
 'payment.apps.PaymentConfig',
 'orders.apps.OrdersConfig',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'storages',
 'products',
 'drf_paytm',
 'drfaddons',
 'feedback.apps.FeedbackConfig',
 'users.apps.UsersConfig',
 'shop.apps.ShopConfig']
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',
 'social_django.middleware.SocialAuthExceptionMiddleware']


Template error:
In template /Users/shyambalakrishnan/dev/trydjango/src/templates/base.html, error at line 0
   Required parameter name not set
   1 : {% load static %}
   2 : <!DOCTYPE html>
   3 : <html>
   4 : <head>
   5 :     <title>{% block title %} Online Shop {% endblock %}</title>
   6 :     <!-- Required meta tags -->
   7 :     <meta charset="utf-8">
   8 : 
   9 : 
   10 :     <!-- Bootstrap CSS -->


Traceback:

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/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 "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "/Users/shyambalakrishnan/Dev/trydjango/src/users/views.py" in profile
  50.     return render(request, 'profile.html', context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/shortcuts.py" in render
  36.     content = loader.render_to_string(template_name, context, request, using=using)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/loader.py" in render_to_string
  62.     return template.render(context, request)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/backends/django.py" in render
  61.             return self.template.render(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in render
  171.                     return self._render(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in _render
  163.         return self.nodelist.render(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/loader_tags.py" in render
  150.             return compiled_parent._render(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in _render
  163.         return self.nodelist.render(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/loader_tags.py" in render
  62.                 result = block.nodelist.render(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in render
  987.             output = self.filter_expression.resolve(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in resolve
  671.                 obj = self.var.resolve(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in resolve
  796.             value = self._resolve_lookup(context)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/template/base.py" in _resolve_lookup
  837.                         current = getattr(current, bit)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/db/models/fields/files.py" in url
  62.         return self.storage.url(self.name)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/storages/backends/s3boto3.py" in url
  620.         params['Bucket'] = self.bucket.name

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/storages/backends/s3boto3.py" in bucket
  326.             self._bucket = self._get_or_create_bucket(self.bucket_name)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/storages/backends/s3boto3.py" in _get_or_create_bucket
  363.         bucket = self.connection.Bucket(name)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/boto3/resources/factory.py" in create_resource
  474.                            client=self.meta.client)(*args, **kwargs)

File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/boto3/resources/base.py" in __init__
  119.                     'Required parameter {0} not set'.format(identifier))

Exception Type: ValueError at /profile/
Exception Value: Required parameter name not set

在处理上述异常期间(“ ImageFieldFile”对象不可下标)。

可能是什么问题?我的服务器正在运行。同时,所有不需要静态的模板也将打开。

boto3==1.9.163
botocore==1.12.163
certifi==2019.3.9
chardet==3.0.4
defusedxml==0.6.0
dj-database-url==0.5.0
Django==2.2
django-crispy-forms==1.7.2
django-filter==2.0.0
django-sendsms==0.3.1
django-storages==1.7.1
djangorestframework==3.9.0
djangorestframework-jwt==1.11.0
docutils==0.14
drf-paytm==0.0.2
drfaddons==0.1.3
gunicorn==19.9.0
idna==2.8
jmespath==0.9.4
oauthlib==3.0.1
Pillow==6.0.0
pycrypto==2.6.1
pycryptodome==3.8.1
PyJWT==1.7.1
python-dateutil==2.8.0
python3-openid==3.1.0
pytz==2018.9
requests==2.21.0
requests-oauthlib==1.2.0
s3transfer==0.2.1
six==1.12.0
social-auth-app-django==3.1.0
social-auth-core==3.1.0
South==1.0.2
sqlparse==0.3.0
urllib3==1.24.3
whitenoise==4.1.2

在我的settings.py文件中:-

我在末尾添加了此代码。

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')

AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

这是我的静态代码和媒体代码

STATIC_URL = '/static/'


MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    #'/var/www/static/',
]

STATIC_ROOT =os.path.join(os.path.dirname(BASE_DIR), "static_cdn")

这是我的文件目录的图像。 File directory

谁能帮我我在做什么错>>

0 个答案:

没有答案