def post(self, request, *args, **kwargs):
if request.POST.get('thumber_token', None) is not None:
pk = request.POST.get('id', None)
if pk is None or pk == '':
# No PK, this means we need to create a new Feedback object
http_referer = self.request.META.get('HTTP_REFERER')
sessionid = self.request.COOKIES[settings.SESSION_COOKIE_NAME]
user_feedback = ThumberForm(data=request.POST).save(commit=False)
user_feedback.url = http_referer
user_feedback.view_name = self._get_view_from_url(http_referer)
user_feedback.session = sessionid
user_feedback.view_args = (request.resolver_match.args, request.resolver_match.kwargs)
else:
# PK given, so this Feedback already exists and just needs the comment adding
user_feedback = Feedback.objects.get(pk=pk)
user_feedback.comment = request.POST['comment']
user_feedback.save()
if request.POST.get('thumber_token', None) == 'sync':
# Non-AJAX post, we've now done the processing, so return super's GET response
return self.get(request)
else:
# AJAX submission, inform frontend the frontend the POST was successful, and give the id back so it
# can be updated in a separate request
return JsonResponse({"success": True, "id": user_feedback.id})
else:
try:
return super().post(request, *args, **kwargs)
except AttributeError:
methods = [m.upper() for m in self.http_method_names if hasattr(self, m) and m.upper() != 'POST']
return HttpResponseNotAllowed(methods)
评论列表
文章目录