Reverse Url 사용하기 - Tirrilee/TechTalk GitHub Wiki

정리

  • models.py에서 get_absolute_url을 설정해서 create, update 시
  • delete 시에는 View에서 reverse_lazy를 사용한다.
    • 전역변수/클래스 변수에서 url reverse 가 필요할 때 reverse_lazy를 사용

CreateView

views.py

class PostCreateView(CreateView):
    model = Post
    field = '__all__'

    def get_success_url(self):
        return resolve_url('blog:post_detail', self.object.id)

models.py

from django.urls import reverse

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def get_absolute_url(self):
        return reverse('blog:post_detail', args=[self.id])

DeleteView

views.py

class PostDeleteView(DeleteView):
    model = Post
    success_url = reverse_lazy('blog:post_list')
# 전역변수/클래스 변수에서 url reverse 가 필요할 때 reverse_lazy를 사용