使用Django视图作为POST请求发送javascript变量

2024-10-03 17:21:44 发布

您现在位置:Python中文网/ 问答频道 /正文

亲爱的所有人战斗了几天之后,我决定请求你们的帮助,因为我是django新手

我试图遵循这个原则,但没有成功

作用域:我想使用django视图发送一个js脚本中生成的变量,该脚本具有json格式。我需要将该数据发送到外部服务器,因此我认为我需要在视图(尚未包含)中发出POST请求。为了让事情顺利进行并从某个地方开始,我认为在按下submit按钮之后,我可以加载一个新页面(points.html),只是为了查看views.py中的数据是否已恢复

主html模板(web_map.html):

    {% load staticfiles %}

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>webmap</title>
  </head>
  <body>
    <form id="options-form" autocomplete="off">
      <label><input type="radio" name="interaction" value="draw" checked> Draw<br></label>
      <label><input type="radio" name="interaction" value="modify"> Modify<br></label>
    </form>

    <form action="sendJson" method="GET">
    {% csrf_token %}
    <div id="submit-button">
      <button class="btn btn-primary btn-sm" type="submit">Submit</button>
    </div>
    </form>

    <script src="{% static 'dist/main.js' %}"></script>

  </body>
</html>

My main.js:

var submitBtn = document.getElementById('submit-button');

submitBtn.addEventListener("click", function() {
    var pointsJson = submitPoints(vectorPoint);
    $.ajax({
        type: "GET",
        contentType: "application/json",
        url: 'sendJson',
        data: pointsJson,
        dataType : "json",
        success: function(result) {
            console.log(result);
        }
    })
}
);

到目前为止,我检索了所需的数据,但现在不知道如何将pointsJson发送到django视图。这也是我需要发送到外部服务器的数据

URL.py:

from django.urls import path
from django.views.generic import TemplateView

from . import views

urlpatterns = [
    path('',
         TemplateView.as_view(template_name='web_map.html'), name='web_map'),
    path('sendJson', views.sendJson),
]

views.py:

from django.shortcuts import render
import json

def web_map(request):
    return render(request, 'web_map.html')


def sendJson(request):
    points = {"point1": "123"}
    return render(request, 'points.html', points)

points.html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Points</title>
  </head>
  <body>
      {{ points }}
  </body>
</html>

不幸的是,我现在很困惑,我真的很想知道以下问题的任何提示:

  1. 如何将我的观点引入视图
  2. 当用户按下提交按钮时,如何将其发送到外部服务器

我希望我的分析能力足够强,我的示例代码会有所帮助。。非常感谢您的时间

编辑

如果你对密码严刑拷打,它会招供的。我发现了一些bug并编辑了上面的代码。不幸的是,仍有一些问题需要解决

关于在按下提交按钮后使用正确的模板:

web_map.html:操作标记被移动到表单标记,而不是附加到按钮

对于从index.js到views.py的变量恢复,我添加了一个ajax调用。到目前为止还没有成功。。还有一个问题是如何将数据(假设我在views.py中获得这些数据)传输到外部服务器


Tags: 数据djangopyimportform服务器视图web