javascript - 对 Django 表单的 AJAX 或 Javascript POST 请求并获取结果

标签 javascript django ajax post django-forms

我正在开发一个基于 django 的项目,其中集成了 ML 训练模型来检查 https url 是否合法。为此,我需要 javascript 或 ajax 为我的表单调用 Rest api,在该表单中我想发送一个 post 请求,以便我可以检查 https url 是否合法。

注意:我的代码已成功运行并在 postman 上给出了正确的答案。所以只想将它与我的 HTML 表单集成

表单.html:

<form role="form" class="form" onsubmit="return false;">
        {% csrf_token %}
      <div class="form-group">
        <label for="data">SITE URL</label>
        <textarea id="data" class="form-control" rows="5"></textarea>
      </div>
      <button id="post" type="button" class="btn btn-primary">POST</button>
    </form>

    <div id="output" class="container"></div>

    <script src="/axios.min.js"></script>
    <script>
      (function () {
        var output = document.getElementById('output');
        document.getElementById('post').onclick = function () {
          var data = document.getElementById('data').value;

          axios.post('http://127.0.0.1:8000/predict/', JSON.parse(data))
            .then(function (res) {
              output.className = 'container';
              output.innerHTML = res.data;
            })
            .catch(function (err) {
              output.className = 'container text-danger';
              output.innerHTML = err.message;
            });
        };
      })();
    </script>

url.py:

path('form/', form, name="form"),
path('predict/', predict, name='predict')

此处 predict/ URL 用于我的 ML 模型验证 https URL 机器学习模型: 我正在回复此回复:

if list(model.predict([test]))[0] == 1:
        return JsonResponse({"Response":"Legitimate"})
else:
    return JsonResponse({"Response":"Phishing or fake"})

最佳答案

下面我提供了一个示例,因为您只是在寻找可能的解决方案:

<form role="form" action="{% url 'predict' %}" class="form" 
    onsubmit="newPrediction(event, this)">
        {% csrf_token %}
      <div class="form-group">
        <label for="data">SITE URL</label>
        <textarea id="data" class="form-control" rows="5"></textarea>
      </div>
      <button id="post" type="button" class="btn btn-primary">POST</button>
</form>
    
<script>
function newPrediction(e, form) {
        e.preventDefault();

        const output = document.getElementById('output');
        const formData = new FormData(form);
    
        fetch(form.action, {
            method: 'POST',
            body: formData
        })
        .then(response => response.json())
        .then(html => {
            output.innerHTML = html.Response
        });
      }
</script>

如果您还有其他问题,请发表评论,我会更新此答案。

关于javascript - 对 Django 表单的 AJAX 或 Javascript POST 请求并获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70084971/

相关文章:

javascript - 无法在js中打印foobar只打印foo和bar

python - Django/Ubuntu 20 - 如何更改为先前版本的 GDAL

javascript - 如何保护主API key ?

python - 使检索到的推文中的链接可点击

database - CakePHP 和 AJAX 无需刷新页面即可更新数据库

javascript - Firefox 15 中的 ajaking onbeforeunload

javascript - 为什么对象键没有从对象中删除?

javascript - 重启匿名函数

javascript - 使用 angularjs 计算数组中的重复值

python - 如何允许管理员用户在 Django 中编辑电子邮件模板?