티스토리 뷰

Django

[Django] 22. Image Update

개발자 뭄뭄 2022. 11. 4. 21:18
반응형

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. 이미지 경로 변경하기


  1. 하위 폴더 만들기
    • 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 폴더 안에 이미지가 업로드 되는 것을 확인할 수 있다.

  1. 날짜 폴더 만들기
    • models.py에서 변경한다.
      image = models.ImageField(blank=True, upload_to="%Y/%m/%d/")

      migration을 진행한 후에 새롭게 이미지를 업로드 해보면, 날짜 폴더에 업로드 되는 것을 확인할 수 있다.

  1. 함수 호출 방식 이용하기
    • 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을 진행한 후에 새롭게 이미지를 업로드해보면, 유저명 폴더에 작성된 것을 확인할 수 있다.


Uploaded by N2T

반응형

'Django' 카테고리의 다른 글

[Django] 24. M:N 관계  (0) 2022.11.04
[Django] 23. Image Resizing  (0) 2022.11.04
[Django] 21. Image Create  (0) 2022.11.04
[Django] 20. Image Upload  (0) 2022.11.04
[Django] 19. 정적파일을 이용해서 이미지 등록하기  (0) 2022.10.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함