on
[Django] 커뮤니티
[Django] 커뮤니티
회원들과 소통을 할 수 있도록 커뮤니티 게시판을 만들었다.
커뮤니티는
작성페이지, 목록페이지, 상세페이지 세 부분이 된다.
먼저, 커뮤니티 클래스를 만들어, 작성자, 날짜, 내용을 입력할 수 있도록 할 것므로
아래와 같이 django안에 models를 만들어주었다.
community models.py
class Community(models.Model) : title = models.CharField(verbose_name='TITLE',max_length=200) # 제목을 가져온다 date = models.DateTimeField('DATE PUBLISHED', default=timezone.now) # 날짜를 가져온다 body = models.TextField('CONTENT', default='') # 본문 내용을 가져온다 mod_date = models.DateTimeField('MODIFY DATE', auto_now=True) # 객체 이름을 제목으로 바꿔줌 def __str__(self) : return self.title # url 패턴을 만들어준다 def get_absolute_url(self) : return reverse('community:community_detail', args=(self.id,)) def get_previous(self) : return self.get_previous_by_mod_date() def get_next(self) : return self.get_next_by_mod_date()
작성페이지 html
{% csrf_token %} 닉네임 * 글 제목 내용 등록하기
글쓰기 views.py
def write(request) : if request.method == 'POST': author = request.POST['user'] title = request.POST['title'] body = request.POST['body'] post = Community.objects.create( # Post 객체의 author 필드에 'author' 변수 할당 author=author, title=title, body=body, ) # save 메서드 호출 post.save() return HttpResponseRedirect(reverse('community')) elif request.method == 'GET': return render(request, 'community_write.html')
글 작성 역시 post메소드일때 실행되도록 한다.
글 작성에 필요한 필드는 작성자, 제목, 본문 이므로 글 작성이 성공이 될 때 post 객체에 작성자, 제목, 본문을 할당한다.
save메소드는 post객체에 저장한 데이터를 데이터베이스에 저장할 수 있도록 해주는 것이다.
글 작성이 성공이되면 커뮤니티 목록 페이지에 해당 글을 보이게 한다.
상세페이지 html
{{details.id}}. {{details.title}} 작성 날짜 : {{details.date}} / 작성자 : {{details.author}} {{details.body}} {% csrf_token %} Delete
상세페이지 views.py
# 포스팅 세부 def detail(request, pk) : details = get_object_or_404(Community, pk=pk) return render(request, 'community_detail.html', {'details' : details})
글 상세 페이지는
번호에 맞는 제목과 내용이 나와야 되는데 번호가 기본키로 저장이 되어있으므로
글 번호를 가져와서 세부 내용을 확인할 수 있도록 한다.
글목록 html
# 글 목록 # 제목 작성자 작성일 {% for myapp in communitys.all %} {{ myapp.id }} {{myapp.title}} {{myapp.author}} {{ myapp.mod_date | date:"Y-m-d h:i" }} {% endfor %} 글쓰기
글목록 views.py
# 커뮤니티 def community(request): communitys = Community.objects # query set return render(request, 'community.html', {'communitys' : communitys})
글 목록 페이지는 글 번호와 글 내용이 맞아야하므로
제목을 눌렀을 시 글 번호에 맞는 세부 내용을 보일 수 있도록 id를 작성하여준다.
포스팅 지우기
# 포스팅 지우기 def post_delete(request, pk): if request.method == 'POST': post = Community.objects.get(pk=pk) post.delete() return render(request, 'post_delete.html') elif request.method == 'GET': return HttpResponse('잘못된 접근 입니다.')
글 작성자와 로그인 한 사용자가 일치하면 delete를 할 수 있다.
일치하지않으면 삭제가 되지 않는다. ( 페이지에러가 나오지만, 구현을 하지 않아 이상한 .. 프로젝트를 할땐 몰랐는데..)
from http://seongyeoni.tistory.com/64 by ccl(A) rewrite - 2021-10-03 13:26:46