Код: Выделить всё
class User(AbstractUser):
avi_pic = models.ImageField(
upload_to='avi/', default='avi/default_avi.jpg')
username = models.CharField(max_length=30, unique=True)
bio = models.CharField(max_length=150, null=True, blank=True, default='')
def __str__(self):
return self.username
Код: Выделить всё
mybucket/media/avi/default_avi.png
Код: Выделить всё
class CreateUser(APIView):
def post(self, request):
serializer = UserRegisterSerializer(data=request.data)
if serializer.is_valid():
user = serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Код: Выделить всё
class UserRegisterSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username')
def validate_username(self, value):
if User.objects.filter(username=value).exists():
raise serializers.ValidationError("Username is already taken.")
allowed_characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-.'
if any(char not in allowed_characters for char in value):
raise serializers.ValidationError(
"Invalid characters in username.")
return value
Код: Выделить всё
STATIC_URL = 'static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = 'https://MYBUCKET.s3.amazonaws.com/media'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
AWS_S3_REGION_NAME = os.environ['AWS_S3_REGION_NAME']
AWS_S3_SIGNATURE_NAME = os.environ['AWS_S3_SIGNATURE_NAME']
AWS_S3_FILE_OVERWRITE = os.environ['AWS_S3_FILE_OVERWRITE']
AWS_DEFAULT_ACL = os.environ['AWS_DEFAULT_ACL']
AWS_QUERYSTRING_AUTH = os.environ['AWS_QUERYSTRING_AUTH']
AWS_S3_VERIFY = os.environ['AWS_S3_VERIFY']
Код: Выделить всё
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
Подробнее здесь: https://stackoverflow.com/questions/791 ... le-storage