urlpatterns = [
path('admin/', admin.site.urls),
path('read', app.views.read),
path('register', app.views.register),
path('', app.views.main),
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app',
'corsheaders',
'storages',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'web',
'USER': 'admin',
'PASSWORD': 'qwer1234',
'HOST': '[RDS 앤드포인트]',
'PORT': '3306',
'OPTIONS': {
'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
}
}
}
pip install django-storages
AWS_REGION = '[지역]'
AWS_STORAGE_BUCKET_NAME = '[버킷이름]'
AWS_ACCESS_KEY_ID = '[엑세스 키이름]'
AWS_SECRET_ACCESS_KEY = '[엑세스 비빌 키 이름]'
# 이미지를 받아가는 도메인 주소
AWS_S3_CUSTOM_DOMAIN = '%s.s3.%s.amazonaws.com' % (AWS_STORAGE_BUCKET_NAME, AWS_REGION)
# Static Setting
STATIC_URL = "http://%s/static/" % AWS_S3_CUSTOM_DOMAIN
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
# Media Setting
MEDIA_URL = "https://%s/media/" % AWS_S3_CUSTOM_DOMAIN
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
# 조회 페이지 반환 하는 함수
def main(request):
pictures = Picture.objects.all()
return render(request, 'main.html', {'result': pictures})
# 이미지 업로드 페이지 반환 및 이미지 업로드 수행 함수
def register(request):
if request.method == 'GET':
return render(request, 'register.html')
elif request.method == 'POST':
images = request.FILES.getlist("image")
for image in images:
picture = Picture()
picture.img = image
picture.save()
return redirect('/')
class Picture(models.Model):
img = models.ImageField(upload_to="", blank=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if result %}
{% for picture in result %}
<img src="https://thisisghmybucket.s3.ap-northeast-2.amazonaws.com/{{ picture.img }}">
{% endfor %}
{% endif %}
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" multiple name="image">
<button>업로드</button>
</form>
</body>
</html>
python .\manage.py collectstatic
연동!
장고 기본 admin 이 올라가있는 것을 확인할 수 있다.