Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 깃허브
- ㅏㄴ
- 파이썬
- API
- 멋쟁이사자처럼10기
- 멋쟁이사자처럼대학
- 크롤링
- 멋사
- 멋사 서류평가
- 파이썬 크롤링
- discord
- 웹동아리
- 멋사10기
- 코딩동아리
- 멋사12
- 멋쟁이사자처럼 서류
- 멋쟁이사자처럼11기
- 멋쟁이 사자처럼
- 알림봇
- 멋사 면접
- 멋사 10기
- 멋사 합격
- 디스코드봇
- 멋사 서류
- 멋사11기
- 멋쟁이사자처럼
- IT동아리
- 기사 제목 크롤링
- django
- 백엔드
Archives
- Today
- Total
ACHO.pk devlog
[멋쟁이사저처럼10기] Django 블로그 만들기(댓글 구현) 본문
블로그 게시글 댓글 구현
models.py
class Comment(models.Model):
comment = models.CharField(max_length=200)
date = models.DateTimeField(auto_new_add=True)
#어떤 게시물에 달린 댓글인지 알 수 있는 게시글이 쓰임
post = models.ForeignKey(Blog, on_delete=models.CASCADE)
def __str__(self):
return self.comment
post = models.ForeignKey(Blog, on_delete=models.CASCADE)
- post는 Blog 객체를 참조해서 만든다.(외래키)
- post가 참조하고 있는 게시글이 삭제된다면, post도 삭제된다.
변경사항이 담긴 파일을 만들어준 후,
python manage.py makemigrations
이 파일을 데이터 베이스에 반영해주면 된다.
python manage.py migrate
comment 객체를 admin 페이지에서 관리할 수 있도록 admin.py 에등록을 해주자.
from django.contrib import admin
from .models import Blog, Comment
admin.site.register(Blog)
admin.site.register(Comment)
HTML 상에 댓글 창 띄우기
forms.py
from .models import Blog, Comment
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['comment']
views.py
from .forms import CommentForm
def detail(request, blog_id):
# blog_id 번째 블로그 글을 데이터베이스로부터 갖고와서
blog_detail = get_object_or_404(Blog, pk=blog_id)
#Blog에 해당하는 객체를 가져오는데, pk 값이 blog_id인 객체를 가져와라
# detail.html로 띄워주는 코드
comment_form = CommentForm()
return render(request, 'detail.html', {'blog_detail': blog_detail
, 'comment_form':comment_form})
def create_comment(request, blog_id):
filled_form = CommentForm(request.POST)
if filled_form.is_valid():
#저장하기 전에 대기
finished_form = filled_form.save(commit=False)
finished_form.post = get_object_or_404(Blog, pk=blog_id)
finished_form.save()
return redirect('detail', blog_id)
detail.html
<h3>댓글</h3>
<form method="POST" action="{% url 'create_comment' blog_detail.id %}">
{% csrf_token %}
{{ comment_form }}
<input type = "submit">
</form>
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home, name='home'),
#댓글 저장
path('create_comment/<int:blog_id>', views.create_comment, name='create_comment')
]
댓글 목록 띄우기
detail.html
<!-- 댓글 목록 -->
{% for comment in blog_detail.comment_set.all %}
<P>{{ comment }}</P>
<hr>
{% endfor %}
'멋쟁이사자처럼' 카테고리의 다른 글
[멋쟁이사저처럼10기] Django 개발자 대나무숲 프로젝트(익명 게시판) (0) | 2022.07.08 |
---|---|
[멋쟁이사저처럼10기] Django 블로그 만들기(로그인/로그아웃) (0) | 2022.07.08 |
[멋쟁이사저처럼10기] Django 블로그 만들기(파일 업로드) (0) | 2022.07.06 |
[멋쟁이사저처럼10기] Django 블로그 만들기(글 목록 띄우기, url 계층) (0) | 2022.07.06 |
[멋쟁이사저처럼10기] Django 블로그 만들기(글 생성-사용자입력) (0) | 2022.07.04 |
Comments