views.py 文件源码

python
阅读 28 收藏 0 点赞 0 评论 0

项目:dit-thumber 作者: uktrade 项目源码 文件源码
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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号