我在上传用户个人资料图片时遇到问题。现在,当我在 Django 管理中创建用户并从管理仪表板上传文件时,它可以正常工作,没有错误。它按照应有的方式进入我的 AWS S3 存储桶,但这显然是不可行的,我一直在寻找解决方案 3 到 4 天,但没有成功或没有任何令人满意的结果。我显然不会向用户提供仪表板访问权限。使用的数据库是MongoDB,数据库引擎是djongo。
这是我的设置.py
INSTALLED_APPS = [
'profileupload',
's3direct',
'storages',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
]
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
AWS_SECRET_ACCESS_KEY = 'MY_SPECIAL_KEY'
AWS_ACCESS_KEY_ID = 'MY_SPECIAL_KEY_NAME'
AWS_STORAGE_BUCKET_NAME = 'S3_BUCKET'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
我的网址.py
from django.urls import path, include
from .views import signup_form
urlpatterns = [
path('signup', signup_form, name='signup'),
]
我的模型.py
class profile(models.Model):
profile_id = models.AutoField(primary_key=True,unique=True)
profile_username = models.CharField(max_length=100,unique=True)
profile_name = models.CharField(max_length=150)
profile_email = models.EmailField(max_length=200)
profile_create_time = models.DateField(auto_now_add=True)
profile_dob = models.DateField()
profile_password = models.CharField(max_length=50, null=True)
profile_picture = models.ImageField(default='default.jpg', upload_to='profile_pics')
def __str__(self):
return str(self.profile_username)
另外,我想更改上传文件的名称,由 Django admin 上传的文件采用文件名,但是当我将这个应用程序公开给公众时,文件名必须正确,以避免被覆盖或具有同一个文件多次
烙印99
BIG阳
相关分类