Django静态文件问题amazon S3

2024-04-26 14:19:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚遇到了这个问题,不知道你能不能帮我,我用的是django 1.7,我的项目在本地运行得很好,我在amazon的EC2上做了一个部署,用nginx,gunicorn等,这个项目在EC2的实例中运行得很好,但是当我在生产.py,将样式、图像上传到S3中的bucket中,但不加载到项目的主页面中。 我用枕头管理图像和静态。。 我只是不知道为什么它不工作,因为静态文件在桶里。请帮帮我,这是我的密码基本.py, 生产.py. 我用的是Python管理.py收集文件,它会收集,但当我在web中打开项目时,它不会加载样式。你知道吗

你知道吗基本.PY你知道吗

from unipath import Path

BASE_DIR = Path(__file__).ancestor(3)

SECRET_KEY = '<my secret key>'



DJANGO_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    )

LOCAL_APPS = (

    'apps.eventos',
    'apps.users',

    )

THIRD_PARTY_APPS = (

    'social.apps.django_app.default',

    )

INSTALLED_APPS = DJANGO_APPS + LOCAL_APPS + THIRD_PARTY_APPS

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'ueventos.urls'
WSGI_APPLICATION = 'ueventos.wsgi.application'

LANGUAGE_CODE = 'es'
TIME_ZONE = 'UTC'
DATE_FORMAT = "Y-m-d"
USE_I18N = True
USE_L10N = False
USE_TZ = True


AUTH_USER_MODEL = 'users.User'

AUTHENTICATION_BACKENDS = (
        'social.backends.facebook.FacebookAppOAuth2',
        'social.backends.facebook.FacebookOAuth2',
        'social.backends.google.GoogleOpenId',
        'social.backends.google.GoogleOAuth2',
        'social.backends.google.GoogleOAuth',
        'django.contrib.auth.backends.ModelBackend',
    )

SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/'
SOCIAL_AUTH_USER_MODEL = 'users.User'

SOCIAL_AUTH_FACEBOOK_KEY = '776670565804594'
SOCIAL_AUTH_FACEBOOK_SECRET = 'fcc2a240ef71ff88c15fd64d685bf4eb'

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '435717486239-b9dpg2pfian4h8dj1vc95jna8tfdeced.apps.googleusercontent.com'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'oE9ZzK_p9zuNxH91gRLS8nH1'

你知道吗生产.PY你知道吗

from .base import *

DEBUG = False
TEMPLATE_DEBUG = False
ALLOWED_HOSTS = ['*']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '<mydb>',
        'USER': '<mydbuser>',
        'PASSWORD' : 'mydbuser',
        'HOST': 'localhost',
        'PORT': '5432'

    }
}

INSTALLED_APPS = INSTALLED_APPS + (

    'storages',
    )

AWS_STORAGE_BUCKET_NAME = 'ueventos'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorages'
AWS_ACCESS_KEY_ID = 'mykey'
AWS_SECRET_ACCESS_KEY = 'mysecretkey'

STATIC_URL = 'https://s3.amazonaws.com/ueventos/'
MEDIA_URL = 'https://s3.amazonaws.com/ueventos/'

MEDIA_ROOT = BASE_DIR.child('media')

我已经安装了boto和django存储。。在服务器上一切正常,问题在于s3中的静态。你知道吗

在我的管理.py以及wsgi.py公司我指定使用de生产.py文件。你知道吗

我有一个名为“媒体”的文件夹,人们上传的所有文件都会保存在那里。但是这个文件夹在s3中不出现。我试图上传一些图片在我的网站,但没有任何工作方式。你知道吗

我正在使用两个应用程序,一个用于事件,另一个用于用户。。两个都是存储图像。。你知道吗

非常感谢。你知道吗


Tags: apps文件项目djangokeypyauthsecret
1条回答
网友
1楼 · 发布于 2024-04-26 14:19:43

尝试以下操作:

from storages.backends.s3boto import S3BotoStorage

StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media')

DEFAULT_FILE_STORAGE = 'config.settings.production.MediaRootS3BotoStorage'
STATICFILES_STORAGE = 'config.settings.production.StaticRootS3BotoStorage'

MEDIA_URL = 'https://s3.amazonaws.com/%s/media/' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = 'https://s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME

相应地调整路径。你知道吗

另请参见:How to set-up a Django project with django-storages and Amazon S3, but with different folders for static files and media files?

相关问题 更多 >