1. 이미지 수정?
- 텍스트처럼 일부만 수정하는 것은 불가능!!
⇒ 새로운 사진으로 대체하는 방식을 사용한다.
# articles / views.py def update(request, pk): article = Article.objects.get(pk=pk) if request.user == article.user: if request.method == 'POST': # CREATE 와 마찬가지로 request.FILES 를 추가한다. form = ArticleForm(request.POST, request.FILES, instance=article) # form = ArticleForm(data=request.POST, instance=article) if form.is_valid(): form.save() return redirect('articles:detail', article.pk) else: form = ArticleForm(instance=article) else: return redirect("articles:index") context = { 'form': form, 'article': article, } return render(request, 'articles/update.html', context)
# articles/templates/update.html {% extends 'base.html' %} {% block content %} <h1>UPDATE</h1> # CREATE와 마찬가지로 enctype을 추가한다. <form action="{% url 'articles:update' article.pk %}" method="POST" enctype="multipart/form-data">
2. 이미지 경로 변경하기
- 하위 폴더 만들기
- models.py 에서 변경한다
class Article(models.Model): title = models.CharField(max_length=10) content = models.TextField() # image = models.ImageField(blank=True) image = models.ImageField(blank=True, upload_to="images/")
migration을 진행한 후에 새롭게 이미지를 업로드 해보면, 이전과는 다르게 media 폴더 안의 images 폴더 안에 이미지가 업로드 되는 것을 확인할 수 있다.
- models.py 에서 변경한다
- 날짜 폴더 만들기
- models.py에서 변경한다.
image = models.ImageField(blank=True, upload_to="%Y/%m/%d/")
migration을 진행한 후에 새롭게 이미지를 업로드 해보면, 날짜 폴더에 업로드 되는 것을 확인할 수 있다.
- models.py에서 변경한다.

- 함수 호출 방식 이용하기
- models.py에서 다음과 같이 변경한다.
def articles_image_path(instance, filename): return f"images/{instance.user.username}/{filename}" image = models.ImageField(blank=True, upload_to=articles_image_path)
migration을 진행한 후에 새롭게 이미지를 업로드해보면, 유저명 폴더에 작성된 것을 확인할 수 있다.
- models.py에서 다음과 같이 변경한다.

Uploaded by N2T