def get(self, request, category, pk, mode): print(pk, mode) if mode == 'add': # pk값은 상관없음. form = forms.BoardForm() return render(request, 'myboard/edit.html', {'form': form}) elif mode == 'list': # pk값 상관없음. username = request.session.get('username', '') user = User.objects.get(username=username) data = models.Board.objects.all().filter(author=user, category=category) # page 개념 page = request.GET.get('page', 1) p = Paginator(data, 3) subs = p.page(page) context = { 'datas': subs, 'username': username, 'category': category } return render(request, apps.APP + '/pagelist.html', context) elif mode == 'detail': p = get_object_or_404(models.Board, pk=pk) # 조회수 증가 p.cnt += 1 p.save() return render(request, apps.APP + '/detail.html', { 'd': p, 'category': category }) elif mode == 'edit': post = get_object_or_404(models.Board, pk=pk) form = forms.BoardForm(instance=post) elif mode == 'delete': post = get_object_or_404(models.Board, pk=pk) post.delete() return redirect(category + '/0/list') else: return HttpResponse('mode를 잘 입력하세용') return render(request, apps.APP + '/edit.html', {"form": form}) # 정확하게 입력
def post(self, request, category, pk, mode): username = request.session["username"] user = User.objects.get(username=username) if pk == 0: form = forms.BoardForm(request.POST) else: post = get_object_or_404(models.Board, pk=pk) form = forms.BoardForm(request.POST, instance=post) if form.is_valid(): post = form.save(commit=False) if pk == 0: post.author = user post.category = category post.save() return redirect("myboard", category, 0, 'list') return render(request, apps.APP + "/edit.html", {"form": form})
def get(self, request, category, pk, mode, page): if mode == 'add': form = forms.BoardForm() elif mode == 'list': username = request.session["username"] user = User.objects.get(username=username) data = models.Board.objects.all().filter(category=category) #print(reverse('myboard', args=('common', 0, 'list'))) page = request.GET.get("page", 1) #(page-1)*3:page*3 #첫번째 파라미터는 데이터, 두번째 파라미터는 한페이지에 보여줄 데이터의 개수 p = Paginator(data, 3) #전체 데이터 중 일부 데이터만 subs에 저장, p.page(1)은 123만, p.page(2)는 456만 보여주는것을 확인할 수 있다. subs = p.page(page) context = { "datas": subs, "username": username, "category": category } return render(request, apps.APP + "/list2.html", context) elif mode == "detail": p = get_object_or_404(models.Board, pk=pk) p.cnt += 1 p.save() return render(request, apps.APP + "/detail.html", { "d": p, "category": category }) elif mode == "edit": post = get_object_or_404(models.Board, pk=pk) form = forms.BoardForm(instance=post) else: return HttpResponse("error page") return render(request, apps.APP + "/edit.html", {"form": form})
def post(self, request, category, pk, mode): username = request.session["username"] user = User.objects.get(username=username) if pk == 0: form = forms.BoardForm(request.POST) else: # 바뀌기 전 데이터 post = get_object_or_404(models.Board, pk=pk) # 바뀌기 전 데이터로부터 form을 생성 form = forms.BoardForm(request.POST, instance=post) if form.is_valid(): # 바뀐 데이터를 저장은 하지 말고 post에 갖고 오기 post = form.save(commit=False) # add할 때 저자정보 넣고 if pk == 0: post.author = user post.category = category post.save() return redirect("myboard", category, 0, 'list') # return render(request, "myboard/edit.html", {"form": form}) return render(request, apps.APP + '/edit.html', {"form": form})