Article 구현 (작정하고 장고 35강)

_upper·2023년 7월 6일

35강 Articleapp의 CRUD 기능을 마무리하기

created_at = models.DateField(auto_now_add=True, null=True)

auto_created=True -> auto_now_add=True 속성으로 변경해야 정상적으로 데이터가 저장됨

import self as self
from django.contrib.auth.decorators import login_required
from django.shortcuts import render

# Create your views here.
from django.urls import reverse, reverse_lazy
from django.utils.decorators import method_decorator
from django.views.generic import CreateView, DetailView, UpdateView, DeleteView

from articleapp.decorations import article_ownership_required
from articleapp.forms import ArticleCreationForm
from articleapp.models import Article
from profileapp.decoration import profile_ownership_required
from profileapp.forms import ProfileCreationForm
from profileapp.models import Profile


@method_decorator(login_required, 'get')
@method_decorator(login_required, 'post')
class ArticleCreateView(CreateView):
    model = Article
    form_class = ArticleCreationForm
    template_name = 'articleapp/create.html'

    def form_valid(self, form):
        temp_article = form.save(commit=False)
        temp_article.writer = self.request.user
        temp_article.save()
        return super().form_valid(form)

    def get_success_url(selfself):
        return reverse('articleapp:detail', kwargs={'pk': self.obfect.pk})

class ArticleDetailView(DetailView):
    model = Article
    context_object_name = 'target_article'
    template_name = 'articleapp/detail.html'


@method_decorator(article_ownership_required, 'get')
@method_decorator(article_ownership_required, 'post')
class ArticleUpdateView(UpdateView):
    model = Profile
    context_object_name = 'target_profile'
    form_class = ProfileCreationForm
    template_name = 'articleapp/update.html'


    def get_success_url(self):
        return reverse('articleapp:detail', kwargs={'pk': self.object.user.pk})


@method_decorator(article_ownership_required, 'get')
@method_decorator(article_ownership_required, 'post')
class ArticleDeleteView(DeleteView):
    model = Article
    context_object_name = 'target_artile'
    success_url = reverse_lazy('articleapp:list')
    template_name = 'articleapp/delete.html'

Articleapp 구현
ariticleapp, views.py

0개의 댓글