我正在开发一个基于 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/