首页 > 解决方案 > 如何将javascript变量发送到django

问题描述

我正在构建一个网络应用程序,用户可以在其中将值设置为特定数字。看起来像这样

<button type="button" class="btn btn-outline-primary" onclick="decrease()"> +1 </button>
<button type="button" class="btn btn-outline-primary" onclick="increase()"> -1 </button>
<script>
    var  a = 0; 
    function increase()
    {
      a--;
      document.getElementById("val").innerHTML = a;
    }
    function decrease() 
    {
      a++;
      document.getElementById("val").innerHTML = a;
    }
</script>

现在我想添加另一个按钮,例如:

<button type="button" class="btn btn-outline-primary" onclick="send()"> send it </button>

但我现在真的不知道如何发送它(也许我应该使用 axaj 和 POST)。我想从我的 django view.py 文件中访问该值并进一步处理它并将其发送回(这里是 GET)。

我该怎么做?在这里感谢任何帮助

标签: javascripthtmldjango

解决方案


所以我已经找到了如何做到这一点。

html:

<button id="post-btn" class="btn btn-outline-primary"> test </button>

js:

  var data = new FormData()
  var  a = 50; 
  var  b = 100;      
  const button = document.getElementById('post-btn');
  button.addEventListener('click', async _ => {
       try { 
             data.append( "json", JSON.stringify( 
             {
              'data1': a, /* var a = whatever */
               'data2': b /* var b = whatever */
             }
             ));    
             const response = await fetch('{% url "pulsox" %}', {
                  method: 'post',
                  headers: {
                        "X-Requested-With": "XMLHttpRequest"
                    },
              body:data
             });
       }
       catch(err) 
       {    window.alert('sth was wrong!');  }
      });

视图.py

from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
@method_decorator(csrf_exempt, name='dispatch')
def pulsox_view(request, *args, **kwargs):

    if request.method == 'POST':
        print(request.POST.get('json'))
        a = request.POST.get('json')
        print(a)
        if request.POST.get( youritem):
            # do you stuff 
            return render(request, your_page ,obj) 
        else:
            return render(request,your_page,obj)

    return render(request,your_page,obj)

推荐阅读