【问题标题】:passing variable from js to django view将变量从 js 传递到 django 视图
【发布时间】:2019-07-24 02:17:38
【问题描述】:

我正在尝试将页面上的 javascript 中的数据传递到我的 django 项目中的另一个视图。但似乎没有调用该视图。我想要做的是使用 JS 我只想从包含 JS 的页面获取数据并将其从 django 视图打印到控制台。

html页面上的js:

    <script>
    var URL="{% url 'projects:Unread' %}"
    function Unread(){
            var data = {'count': '5', 'X-csrfmiddlewaretoken': csrfmiddlewaretoken};
            $.post(URL, data);

        }
       </script>

我在页面的某个地方调用了这个函数,我使用了一个警报来确保它被调用。

我的 urls.py :

    path('notification/',Unread,name='Unread')

我的看法:

def Unread(request):
count=request.body['count']
print("hello")
print("count status ",count)

我也尝试过 request.POST 来获取价值,但现在可以工作了。我真正想要的是从 JS 中获取“计数”到我的视图中。但它没有发生,即使是“你好”也没有被打印出来与 JS 相关。我对 django 和 JS 都很陌生,所以我不确定我做错了什么。 在此先感谢:)

【问题讨论】:

  • 数据键应该是csrfmiddlewaretoken。这3种方法你试过了吗? stackoverflow.com/questions/8614947/…
  • @dan-klasson 成功将数据中的 crsftoken 更改为 'csrfmiddlewaretoken': '{{ csrf_token }}'

标签: javascript ajax django


【解决方案1】:

正如评论者所提到的,您应该仔细检查以确保您的 POST 没有因 CSRF 原因而失败。如果您确定不是,您可以使用request.POST 访问表单编码的帖子变量,不要使用request.body

def Unread(request):
    count=request.POST['count']
    print("hello")
    print("count status ",count)

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 1970-01-01
    • 2019-05-26
    • 2011-11-28
    • 2022-01-15
    • 2015-05-23
    • 2021-10-15
    • 1970-01-01
    • 2020-06-15
    相关资源
    最近更新 更多