Django 이미지 업로드 구현하기
로그인 한 후에 자신의 계정에 사진을 저장할 수 있는 기능을 만들 때,
사용할 수 있는 이미지 업로드 기능을 구현해보고자 한다.
앱은 user와 photo를 생성
settings.py에서 업로드 된 이미지를 저장할 수 있도록 media 경로를 설정
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urls.py에도 + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 업로드 된 파일의 경로를 설정
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('user.urls')),
path('', include('photo.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
models.py에서 이미지를 저장할 수 있는 db table을 생성하면 ImageField로 필드를 하나 생성
class PhotoModel(models.Model):
class Meta:
db_table = "photo"
user = models.ForeignKey(UserModel, on_delete=models.CASCADE)
imgfile = models.ImageField(upload_to='photo/', null=True, blank=True)
forms.py 작성
class ImageUpload(forms.ModelForm):
class Meta:
model = PhotoModel
fields = ['imgfile']
view.py에서 업로드 된 파일을 db에 저장할 수 있도록 작성
user는 ForeignKey를 사용했기 때문에 아래와 같이 코드를 작성
def fileUpload(request):
if request.method == 'POST':
photo = PhotoModel()
user = request.user
photo.user = user
photo.imgfile = request.FILES["imgfile"]
photo.save()
return redirect('/upload')
else:
imageupload = ImageUpload
context = {
'imageupload': imageupload,
}
return render(request, 'mainpage.html', context)
그리고 템플릿을 작성해 준 다음 runserver를 하면 업로드 기능을 사용할 수 있다.
media 폴더가 생성되고 이미지가 업로드 된다.
'코딩공부 > Django' 카테고리의 다른 글
DRF Permission으로 사용자의 접근 제어 (0) | 2022.11.14 |
---|---|
DRF 커스텀 유저 구현하기, access token의 payload 수정 방법 (0) | 2022.11.10 |
DRF Feedview 헤쳐보기 / TIL_221027 (0) | 2022.10.27 |
DRF JWT, CORS 란? / TIL_221026 (0) | 2022.10.26 |
Django password 암호화 / TIL_221017 (0) | 2022.10.17 |
댓글