当前位置: 首页 > 面试题库 >

在Django视图中调用“ request.POST”时,Ajax POST不发送数据

堵琨
2023-03-14
问题内容

我试图让Ajax POST将数据发送到视图,以便在单击divwith类时可以在那里处理数据up-arrow

问题是,当我单击所说的div并request.POST在视图文件中打印时,我得到了一个POST包含的对象<QueryDict: {}>。空!我似乎无法弄清楚为什么我的POST请求没有通过发送我的数据。

这是我的HTML …

{% for i in post.posts %}
    <li>
        <div>
            <div class='up-arrow'>
            </div>
            {{i}}
        </div>
    </li>
{% endfor %}

这是我的AJAX / jQuery …

$(document).ready(function(){
            $('.up-arrow').click(function(){
                $(this).hide()
                console.log('click')
                $.ajax({
                    headers: {
                        'Content-Type':'application/json',
                        'X-CSRFToken': getCookie('csrftoken')
                    },
                    url: 'voteuppost',
                    type: 'POST',
                    data: {'dane': 123456789101112},
                    success: function(data) {
                        alert('success!')   
                    },
                    error: function(){
                        alert('fail')
                    }

                })
                return false
            });
            function getCookie(name) {
            var cookieValue = null;
            if (document.cookie && document.cookie != '') {
                var cookies = document.cookie.split(';');
                for (var i = 0; i < cookies.length; i++) {
                    var cookie = jQuery.trim(cookies[i]);
                    if (cookie.substring(0, name.length + 1) == (name + '=')) {
                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                        break;
                    }
                }
            }
            return cookieValue;
        }
        })

这是我的看法

class VoteUpPost(View):
    def post(self, request):
        print(request.POST)
        return JsonResponse({'status': True})

这是我的网址路线…

    url(r'^voteuppost$', VoteUpPost.as_view()),

我尝试过的东西

1)我用GET代替,POST我能够使用request.GET.get('dane')

1)尝试使用request.POST.datarequest.POST.DATA获得以下内容… AttributeError: 'QueryDict' object has no attribute 'data',我也得到了’失败’ alert

如何通过POST请求将数据发送到视图,然后访问其中的数据?


问题答案:

与一起发布JSON数据时,application/json您需要使用request.body而不是request.POST

像这样:

class VoteUpPost(View):
    def post(self, request):
        print(request.body)
        data = json.loads(request.body)
        return JsonResponse({'status': True})

就像雅克提到的那样,请确保更新您的js以传递JSON字符串。

更改:

data: {'dane': 123456789101112},

至:

data: JSON.stringify({'dane': 123456789101112}),


 类似资料:
  • 我必须在窗口对象中存储一些数据,以便在前端渲染中使用它。我有一个模型: 我有一个观点: 我想检索作为JSON对象并将其存储在对象中: 但我得到了这样的回答: 有人知道我做错了什么吗? 谢啦! 编辑: 我只是按照André Laszlo的建议尝试了< code>return list(context):它返回 但是如果我使用: 似乎很管用。我将阅读有关“list()”的文档。

  • 所以我使用django视图调用api post方法,但它给了我400个错误 当我遇到csrf禁止错误b4时,im现在使用。我尝试对API本身执行post方法,并使用视图调用API。 使用View:QueryDict:{}[22/jan/2018 18:56:12]“post/api/test/?book=second+&author=ban&date=2018-01-10+08%3a00am ht

  • 问题内容: 我有一个很简单的模型可以工作: 我知道我在signal.py中的create_badge函数有效。如果我发送的邮件没有发送者的值,则表示发送者是LogEntry对象。我想要/需要在post_save脚本中引用一些实例信息,如下所示: 我在哪里可以打电话给我的post_save呼叫,以便它知道Badge(我以为这是解决办法? 谢谢。 问题答案: 定义徽章 后, 只需将信号与sender

  • 问题内容: 有什么办法可以从Django视图进行RESTful api调用吗? 我正在尝试从Django视图沿URL传递标头和参数。我从一个半小时开始搜寻,但是找不到任何有趣的事情。 任何帮助,将不胜感激 问题答案: 是的,当然有。你可以使用urllib2.urlopen,但我更喜欢请求。 请求库是urllib3之上的一个非常简单的API.

  • 我正在用Laravel 4发送电子邮件: 消息用熨斗排队。木卫一。电子邮件会发送给收件人,但$data数组不会传递给电子邮件视图。 我的日志文件中出现以下错误: 它工作正常,直到我配置我的队列。任何想法? 代码视图(刀片模板):

  • 问题内容: 我有一个关于如何从模板HTML按钮调用视图函数的问题?像onclick函数一样?这是模板: 而views.py是: 非常感谢你。 问题答案: 一种选择是,你可以使用 像这样: (删除和) 如果你想加载页面的特定部分,而无需重新加载页面-你可以 和一个听众