DB
DB에 대하여(7)_Article & User 게시글 READ & UPDATE & DELETE (feat. Django)
데이터분석가 이채은
2024. 4. 24. 09:00
1. 게시글 READ
각 게시글의 작성자 이름을 출력한다.
<!-- articles/index.html -->
{% for article in articles %}
<p>작성자 : {{ article.user }}</p>
<p>글 번호 : {{ article.pk }}</p>
<a href="{% url 'articles:detail' article.pk %}">
<p>글 제목 : {{article.title }}</p>
</a>
<p>글 내용: {{ article.content }}</p>
<hr>
{% endfor %}
2. 게시글 UPDATE
게시글 수정 요청 사용자와 게시글 작성 사용자를 비교하여 보인의 게시글만 수정할 수 있도록 합니다.
# articles/views.py
@login_required
def update(request, pk):
article = Article.objects.get(pk=pk)
if request.user == article.user:
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)
else:
return redirect('articles:index')
해당 게시글의 작성자가 아니라면, 수정/삭제 버튼을 출력하지 않도록 합니다.
<!-- articles/detail.html -->
{% if request.user == article.user %}
<a href="{% url 'articles:update' article.pk %}">UPDATE</a><br>
<form action="{% url 'articles:delete' article.pk %}" method="POST">
{% csrf_token %}
<input tpye="submit" value="DELETE">
</form>
{% endif %}
3. 게시글 DELETE
삭제를 요청하려는 사람과 게시글을 작성한 사람을 비교하여 본인의 게시글만 삭제 할 수 있도록 합니다.
# articles/views.py
@login_required
def delete(request, pk):
article = Article.objects.get(pk=pk)
if request.user == article.user:
article.delete()
return redirect('articles:index')