# articles > views.py
이 게시글의 작성자만 지울 수 있도록 처리해주기
지금은 로그인이 되어있는 사람이면, 아무나 다 지울 수 있다
def delete(request, pk):
article = Article.objects.get(pk=pk)
if request.user == article.user:
article.delete()
return redirect('articles:index')
@login_required
def comments_delete(request, article_pk, comment_pk):
comment = Comment.objects.get(pk=comment_pk)
if request.user == comment.user:
comment.delete()
return redirect('articles:detail', article_pk)
더보기
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .models import Article, Comment
from .forms import ArticleForm, CommentForm
def index(request):
articles = Article.objects.all()
context = {
'articles': articles,
}
return render(request, 'articles/index.html', context)
def detail(request, pk):
article = Article.objects.get(pk=pk)
comments = article.comment_set.all()
comment_form = CommentForm()
context = {
'article': article,
'comments': comments,
'comment_form': comment_form,
}
return render(request, 'articles/detail.html', context)
@login_required
def create(request):
if request.method == 'POST':
form = ArticleForm(request.POST)
if form.is_valid():
article = form.save(commit=False)
article.user = request.user
article.save()
return redirect('articles:detail', article.pk)
else:
form = ArticleForm()
context = {
'form': form,
}
return render(request, 'articles/create.html', context)
@login_required
def delete(request, pk):
article = Article.objects.get(pk=pk)
if request.user == article.user:
article.delete()
return redirect('articles:index')
@login_required
def update(request, pk):
article = Article.objects.get(pk=pk)
if request.method == 'POST':
form = ArticleForm(request.POST, instance=article)
if form.is_valid():
form.save()
return redirect('articles:detail', article.pk)
else:
form = ArticleForm(instance=article)
context = {
'form': form,
'article': article,
}
return render(request, 'articles/update.html', context)
def comments_create(request, pk):
article = Article.objects.get(pk=pk)
comments = article.comment_set.all()
comment_form = CommentForm(request.POST)
if comment_form.is_valid():
comment = comment_form.save(commit=False)
comment.article = article
comment.user = request.user
comment.save()
return redirect('articles:detail', article.pk)
context = {
'comment_form': comment_form,
'article': article,
'comments': comments,
}
return render(request, 'articles/detail.html', context)
@login_required
def comments_delete(request, article_pk, comment_pk):
comment = Comment.objects.get(pk=comment_pk)
if request.user == comment.user:
comment.delete()
return redirect('articles:detail', article_pk)
'WEB > Django prac' 카테고리의 다른 글
[Django prac][DB N:M ① 의사와 환자] 2. 의사와 환자 간 모델 관계 설정 (0) | 2024.04.08 |
---|---|
[Django prac][DB N:1 ②] 10. 실행 후 결과 확인하기 (0) | 2024.04.05 |
[Django prac][DB N:1 ②] 8. 수정 요청자와 작성자를 비교해서 일치한다면, 글을 update할 수 있도록 만들기 (0) | 2024.04.05 |
[Django prac][DB N:1 ②] 7. 수정 요청자와 작성자가 서로 같을 때만 글을 update할 수 있는 버튼이 나타나도록 (0) | 2024.04.05 |
[Django prac][DB N:1 ②] 6. 댓글 작성자가 페이지에 잘 표시되는지 확인하기 (0) | 2024.04.04 |