def comment_create(request, post_pk): """ url : /posts/<int:post_pk>/comments/create/ Template: dqjtdma(post-list.html에 Form을 구현) post-list.html 내부에서, 각 Post마다 자신에게 연결된 PostComment목록을 보여주도록 한다 <ul> <li><b>작성자명</b><span>내용</span></li> <li><b>작성자명</b><span>내용</span></li> </ul> Form: post.forms.CommentCreateForm :param request: :param post_pk: :return: """ if request.method == 'POST': user = request.user post = Post.objects.get(pk=post_pk) # content = request.POST['content'] # Form instance를 만드는데, data에 request.POST로 전달된 dict를 입력 form = CommentCreateForm(data=request.POST) # Form 인스턴스 생성시, 주어진 데이터가 해당 Form이 가진 Field들에 적절한 데이터인지 검증 if form.is_valid(): # 검증에 통과한 경우, 통과한 데이터들은 Form 인스턴스의 'cleaned_date속성에 포함됨 # content = form.cleaned_data['content'] # PostComment.objects.create( # author=user, # post=post, # content=content form.save(post=post, author=request.user) return redirect('posts:post_list')
def comment_create(request, post_pk): # URL: /posts/<int:post_pk>/comments/create/ # Template: 없음 (post_list.html 내에 Form을 구현) # post-list.html 내부에서, 각 Post마다 자신에게 연결된 PostComment목록을 보여주도록 함 # 보여주는 형식은 # <ul> # <li><b>작성자명</b><span>내용</span>/li> # <li><b>작성자명</b><span>내용</span>/li> # </ul> # Form: post.forms.CommentCreateForm content = request.POST['content'] post = Post.objects.get(pk=post_pk) # Form 인스턴스를 만드는데, data에 request.POST로 전달된 dict 입력 form = CommentCreateForm(data=request.POST) # Form 인스턴스 생성 시, 주어진 데이터가 해당 Form이 가진 Field들에 적절한 데이터인지 검증 if form.is_valid(): # comment = form.cleaned_data['comment'] form.save(post=post, author=request.user) PostComment.objects.create(post=post, author=request.user, content=content) # post.postcomment_set.creat(post=post, author=request.user, content=comment) return redirect('posts:post-list')
def comment_create(request, pk): if request.method == 'POST': post = Post.objects.get(pk=pk) form = CommentCreateForm(data=request.POST) if form.is_valid(): form.save(post=post, author=request.user) return redirect('posts:post-list')
def post_comment_view(request, post_pk): if request.method == 'POST': post = Post.objects.get(pk=post_pk) user = request.user # comment = request.POST['comment'] # postcomment = post.postcomment_set.create(author=user, content=comment) form = CommentCreateForm(data=request.POST) if form.is_valid(): form.save(post=post, author=user) return redirect('posts:post-list')
def post_list(request, tag=None): """ 1. 로그인 완료 후 이 페이지로 이동하도록 함 2. index에 접근할 때 로그인이 되어있다면, 이 페이지로 이동하도록 함 로그인 되어있는지 확인: User.is_authenticated가 True인지 체크 URL : /post/ (posts.urls를 사용, config.urls에서 include) Template : templates/posts/post-list.html <h1>Post List</h1> 'posts'라는 키로 모든 Post QuerySet을 전달 순서는 pk의 역순 그리고 전달받은 QuerySet을 순회하며 적절히 Post내용을 출력 """ if tag is None: posts = Post.objects.order_by('-pk') else: posts = Post.objects.filter(tags__name__iexact=tag).order_by('-pk') comment_form = CommentCreateForm() context = { 'posts': posts, 'comment_form': comment_form, } return render(request, 'posts/post-list.html', context)
def post_list(request): """ # URL = /posts/ # template: templates/posts/post-list.html """ # URL = /posts/ # template: templates/posts/post-list.html posts = Post.objects.order_by('-pk') form = CommentCreateForm() context = dict(posts=posts, form=form) return render(request, 'posts/post-list.html', context)
def post_list_view(request, tag=None): # posts = Post.objects.all() if tag is None: posts = Post.objects.order_by('-pk') else: posts = Post.objects.filter(tags__name__iexact=tag).order_by('-pk') comment_form = CommentCreateForm() context = { 'posts': posts, 'comment_form': comment_form, } return render(request, 'posts/post-list.html', context)
def post_list(request, tag=None): if tag is None: posts = Post.objects.order_by('-pk') else: posts = Post.objects.filter(tags__name__iexact=tag).order_by('-pk') # request를 넘겨받아 render 호출 # posts/post_list.html 템플릿을 보여줌 # 쿼리셋 이름으로 사용되는 posts 변수 만듦 comment_form = CommentCreateForm() # posts 쿼리셋 context에 담음 context = {'posts': posts, 'comment_form': comment_form} # 템플릿을 사용하기 위한 context 매개변수 추가 return render(request, 'posts/post_list.html', context)