form_invalid redirection with CBVs

ยอดดู 65 ครั้ง
ข้ามไปที่ข้อความที่ยังไม่อ่านรายการแรก

David

ยังไม่อ่าน,
24 เม.ย. 2558 07:14:1824/4/58
ถึง django...@googlegroups.com
Following a form_invalid I need to redirect to the CreateComment view below with the errors shown in the form. Is this possible please? Highlighted is where I need help.

Thank you for any assistance.


class Comments(View):
def get(self, request, *args, **kwargs):
view = CreateComment.as_view()
return view(request, *args, **kwargs)

def post(self, request, *args, **kwargs):
view = CommentCreate.as_view()
return view(request, *args, **kwargs)

class CreateComment(ListView):
model = Comment
paginate_by = 2

def get_queryset(self):
comments = Comment.objects.filter(
object_id=self.kwargs['pk'], content_type_id=self.kwargs['ct']
).order_by('-created')
return comments

def get_context_data(self, **kwargs):
context = super(CreateComment, self).get_context_data(**kwargs)
context['form'] = CommentForm()
return context

class CommentCreate(SingleObjectMixin, FormView):
template_name = 'comment/comment_list.html'
form_class = CommentForm
model = Comment

def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = self.get_form()
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)

def get_success_url(self):
return reverse('comment:Comments', kwargs={'ct': self.kwargs['ct'], 'pk': self.kwargs['pk']})

def form_valid(self, form):
data = form.save(commit=False)
data.creator = self.request.user
data.object_id = self.kwargs['pk']
data.content_type_id = self.kwargs['ct']
data.save()
return super(CommentCreate, self).form_valid(form)

def form_invalid(self, form):
return super (CommentCreate, self).form_invalid(form)

David

ยังไม่อ่าน,
24 เม.ย. 2558 09:50:5524/4/58
ถึง django...@googlegroups.com

David

ยังไม่อ่าน,
27 เม.ย. 2558 12:28:4627/4/58
ถึง django...@googlegroups.com
Got this working. See below:

class CreateComment(MultipleObjectMixin, FormView):
template_name = 'comment/comment_list.html'
form_class = CommentForm
model = Comment
paginate_by = 5

def post(self, request, *args, **kwargs):
if not request.user.is_authenticated():
return HttpResponseForbidden()
self.object_list = Comment.objects.filter(
object_id=self.kwargs['pk'], content_type_id=self.kwargs['ct']
).order_by('-created')
form = self.get_form()
if form.is_valid():
return self.form_valid(form)

return super(CreateComment, self).post(request, *args, **kwargs)

def get_success_url(self):
return reverse('comment:Comments', kwargs={'ct': self.kwargs['ct'], 'pk': self.kwargs['pk']})

def form_valid(self, form):
data = form.save(commit=False)
data.creator = self.request.user
data.object_id = self.kwargs['pk']
data.content_type_id = self.kwargs['ct']
data.save()
return super(CreateComment, self).form_valid(form)

def get_context_data(self, **kwargs):
context = super(CreateComment, self).get_context_data(**kwargs)
context['paginate_by'] = self.paginate_by
return context
ตอบทุกคน
ตอบกลับผู้สร้าง
ส่งต่อ
ข้อความใหม่ 0 รายการ