#todo 프로필 전체에 대한 UPDATE 뷰로 사용? 그럼 base 프로필은 어케 처리?
def profile_modify(request):
"""
계정설정 이미지 등록 및 변경
"""
profile = request.user.profile
if request.method == "POST":
if profile.image:
raise ValueError('1')
form = ProfileForm(request.POST, request.FILES, instance=profile)
if form.is_valid():
# 기존 이미지 파일 삭제
if profile.image:
raise ValueError(profile.image.path)
# if profile.image and 'image' in request.FILES:
# os.remove(os.path.join(settings.MEDIA_ROOT, profile.image.path))
form.save()
return redirect(request.path_info)
else:
form = ProfileForm(instance=profile)
context = {'form': form, 'profile': profile, 'settings_type': 'image'}
return render(request, 'common/settings/image.html', context)
예상) 모델 인스턴스에 저장하기 전, 사용자에게 받은 사진 파일은 settings.MEDIA_ROOT에 임시적으로 저장하는 듯?
서버 구동 시 media 파일에 대한 경로를 nginx(웹서버) 세팅에 추가해줘야 한다.
/etc/nginx/sites-available$ sudo vim mysite
server {
listen 80;
server_name 3.38.13.240;
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
alias /home/ubuntu/projects/mysite/static;
}
location /media {
alias /home/ubuntu/projects/mysite/media;
}
location / {
include proxy_params;
proxy_pass <http://unix>:/tmp/gunicorn.sock;
}
}
sudo systemctl restart nginx