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
- 멋쟁이사자처럼10기
- 멋쟁이 사자처럼
- 멋사10기
- 멋사 면접
- 깃허브
- 멋쟁이사자처럼
- 멋사12
- 백엔드
- 멋사 서류
- 멋사 10기
- 멋쟁이사자처럼 서류
- django
- 기사 제목 크롤링
- 멋사11기
- IT동아리
- 웹동아리
- 크롤링
- 코딩동아리
- 멋사
- 멋사 서류평가
- 알림봇
- ㅏㄴ
- 디스코드봇
- API
- discord
- 멋사 합격
- 파이썬
- 멋쟁이사자처럼11기
- 멋쟁이사자처럼대학
- 파이썬 크롤링
Archives
- Today
- Total
ACHO.pk devlog
[멋쟁이사자처럼10기] Django 개발자 대나무숲 프로젝트(자유게시판) 본문
자유게시판
이전 게시물인 '익명게시판'과 다 똑같고, 새 글을 작성한 사용자의 이름을 공개하는지에 대한 여부만 다르다.
snsapp/models.py
- '작성자'에 해당하는 열이 필요하기 때문에 django에 내장되어 있는 User 객체를 참조해야한다. ( author )
- 참조하고 있는 User가 삭제(탈퇴)된다면, User가 작성한 게시글이나 댓글도 다 삭제된다.
from django.contrib.auth.models import User
class FreePost(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
- 자유게시판의 댓글이므로 FreePost를 참조한다.
class FreeComment(models.Model):
comment = models.TextField()
date = models.DateTimeField(auto_now_add=True)
post = models.ForeignKey(FreePost, null=True, blank=True, on_delete=models.CASCADE)
def __str__(self):
return self.comment
snsapp/views.py
- 자유게시판 목록
def freehome(request):
# posts = Post.objects.all()
freeposts = FreePost.objects.filter().order_by('-date')
return render(request, 'free_index.html', {'freeposts': freeposts})
free_index.html 의 일부
<tbody>
{% for post in freeposts %}
<tr>
<td><a href="{% url 'freedetail' post.id %}">{{ post.title }}</a></td>
<td>{{ post.date }}</td>
<td>{{ post.author.username }}</td>
</tr>
{% endfor %}
</tbody>
- 자유게시판 새 글 생성
- User가 자유게시판, 새 글 생성 페이지에서 글을 작성했을 때 User가 작성한 내용과 User의 정보도 저장해야한다.
- models.py에서 FreePost model를 확인하면 이해가 간다.
def freepostcreate(request):
if request.method == 'POST' or request.method == 'FILES':
form = FreePostForm(request.POST, request.FILES)
if form.is_valid():
unfinished = form.save(commit=False)
unfinished.author = request.user # user 추가!
unfinished.save()
return redirect('freehome')
else:
form = FreePostForm()
return render(request, 'free_post_form.html', {'form':form})
- 자유게시판 상세페이지
def freedetail(request, post_id):
post_detail = get_object_or_404(FreePost, pk=post_id)
comment_form = FreeCommentForm()
return render(request, 'free_detail.html', {'post_detail':post_detail, 'comment_form': comment_form})
- 자유게시판에 달린 댓글
def new_freecomment(request, post_id):
filled_form = FreeCommentForm(request.POST)
if filled_form.is_valid():
finished_form = filled_form.save(commit=False)
finished_form.post = get_object_or_404(FreePost, pk=post_id)
finished_form.save()
return redirect('freedetail', post_id)
'멋쟁이사자처럼' 카테고리의 다른 글
[멋쟁이사자처럼10기] Django 개발자 대나무숲 프로젝트(Pagination) (0) | 2022.07.14 |
---|---|
[멋쟁이사자처럼10기] Django 개발자 대나무숲 프로젝트(회원가입) (0) | 2022.07.11 |
[멋쟁이사저처럼10기] Django 개발자 대나무숲 프로젝트(로그인/로그아웃 구현하기) (0) | 2022.07.09 |
[멋쟁이사저처럼10기] Django 개발자 대나무숲 프로젝트(댓글 구현하기) (0) | 2022.07.09 |
[멋쟁이사저처럼10기] Django 개발자 대나무숲 프로젝트(익명 게시판) (0) | 2022.07.08 |
Comments