如何将数据从javascript函数发送到Django视图
我试图从一个javascript函数发送数据,该函数在页面加载时生成一个随机字符串,并将其发送到Django视图。我不知道如何构造script标记以在页面加载后发送数据,以及如何构造views.py以接收数据。我是javascript新手,不太知道该怎么做。我感谢你提供的任何帮助如何将数据从javascript函数发送到Django视图,javascript,python,html,django,Javascript,Python,Html,Django,我试图从一个javascript函数发送数据,该函数在页面加载时生成一个随机字符串,并将其发送到Django视图。我不知道如何构造script标记以在页面加载后发送数据,以及如何构造views.py以接收数据。我是javascript新手,不太知道该怎么做。我感谢你提供的任何帮助 index.html <script> function makeid(length) { var result = ''; var char
index.html
<script>
function makeid(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for ( var i = 0; i < length; i++ ) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
console.log(makeid(9));
</script>
index.html
函数makeid(长度){
var结果=“”;
变量字符='ABCDEFGHIJKLMNOPQRSTUVXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789';
var charactersLength=characters.length;
对于(变量i=0;i
您可以使用ajax
将数据发送到Django视图,如下代码所示
javascript:
function makeid(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for ( var i = 0; i < length; i++ ) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
$.ajax({
type: "GET",
url: '/my_def_in_view',
data: {
"result": result,
},
dataType: "json",
success: function (data) {
// any process in data
alert("successfull")
},
failure: function () {
alert("failure");
}
});
}
views.py:
def my_def_in_view(request):
result = request.GET.get('result', None)
# Any process that you want
data = {
# Data that you want to send to javascript function
}
return JsonResponse(data)
如果成功,则返回到“成功”部分。您可以通过两种方式实现:
- 传统的ajax
- WebSocket:带有django通道
/*Agregar boton refresh al lado del campo input*/
let captcha_field =
document.getElementById('captcha-field-registro_1').parentNode;
let refresh_button=document.createElement('BUTTON');
refresh_button.addEventListener('click',refresh_captcha)
refresh_button.innerHTML = "Refrescar Captcha"; // Insert text
captcha_field.appendChild(refresh_button);
let url_captcha= location.protocol + "//" +
window.location.hostname + ":" +
location.port + "/captcha/refresh/";
let id_captcha_0="captcha-field-registro_0"
function refresh_captcha(){
let xhr = new XMLHttpRequest();
xhr.open('GET', url_captcha, true);
xhr.onload = function recv_captcha_load(event){
console.log("event received", event,
"state",xhr.readyState);
let data_txt = xhr.responseText;
let data_json = JSON.parse(data_txt);
console.log("Data json", data_json);
if (xhr.readyState==4){
if (xhr.status==200){
console.log("LOAD Se ha recibido esta información", event);
let captcha_img=document.getElementsByClassName('captcha')[0];
console.log("Catpcha img dom", captcha_img);
captcha_img.setAttribute('src', data_json['image_url'])
document.getElementById(id_captcha_0).value=data_json['key']
}
else{
console.log("Error al recibir")
}
}
};
var csrftoken = getCookie('csrftoken');
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.setRequestHeader("X-CSRFToken", csrftoken);
xhr.send();
}
function getCookie(name) {
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
let cookie = cookies[i].trim();
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
/*Agregar boton刷新lado del campo输入*/
让验证码字段=
document.getElementById('captcha-field-registro_1').parentNode;
让refresh_button=document.createElement('button');
刷新按钮。addEventListener('单击',刷新验证码)
刷新按钮。innerHTML=“Refrescar Captcha”//插入文本
验证码字段。追加子项(刷新按钮);
让url_captcha=location.protocol+“/”+
window.location.hostname+“:”+
location.port+“/captcha/refresh/”;
让id\u captcha\u 0=“captcha-field-registro\u 0”
函数刷新\u验证码(){
设xhr=newXMLHttpRequest();
xhr.open('GET',url\u captcha,true);
xhr.onload=函数recv\u captcha\u加载(事件){
console.log(“接收到事件”,事件,
“状态”,xhr.readyState);
让data_txt=xhr.responseText;
让data_json=json.parse(data_txt);
log(“数据json”,数据_json);
if(xhr.readyState==4){
如果(xhr.status==200){
console.log(“加载信息”,事件);
让captcha_img=document.getElementsByClassName('captcha')[0];
日志(“Catpcha img dom”,captcha\u img);
captcha\u img.setAttribute('src',data\u json['image\u url']))
document.getElementById(id\u captcha\u 0).value=data\u json['key']
}
否则{
console.log(“Error al recibir”)
}
}
};
var csrftoken=getCookie('csrftoken');
setRequestHeader('X-request-With','XMLHttpRequest');
setRequestHeader(“X-CSRFToken”,CSRFToken);
xhr.send();
}
函数getCookie(名称){
让cookieValue=null;
if(document.cookie&&document.cookie!=''){
var cookies=document.cookie.split(“;”);
for(设i=0;i
您需要重新表述您的问题,以了解您想做什么。检查这里谢谢,我能解决这个问题谢谢你的回答不客气。很好,所以请接受这一正确答案,帮助其他有同样问题的人。
/*Agregar boton refresh al lado del campo input*/
let captcha_field =
document.getElementById('captcha-field-registro_1').parentNode;
let refresh_button=document.createElement('BUTTON');
refresh_button.addEventListener('click',refresh_captcha)
refresh_button.innerHTML = "Refrescar Captcha"; // Insert text
captcha_field.appendChild(refresh_button);
let url_captcha= location.protocol + "//" +
window.location.hostname + ":" +
location.port + "/captcha/refresh/";
let id_captcha_0="captcha-field-registro_0"
function refresh_captcha(){
let xhr = new XMLHttpRequest();
xhr.open('GET', url_captcha, true);
xhr.onload = function recv_captcha_load(event){
console.log("event received", event,
"state",xhr.readyState);
let data_txt = xhr.responseText;
let data_json = JSON.parse(data_txt);
console.log("Data json", data_json);
if (xhr.readyState==4){
if (xhr.status==200){
console.log("LOAD Se ha recibido esta información", event);
let captcha_img=document.getElementsByClassName('captcha')[0];
console.log("Catpcha img dom", captcha_img);
captcha_img.setAttribute('src', data_json['image_url'])
document.getElementById(id_captcha_0).value=data_json['key']
}
else{
console.log("Error al recibir")
}
}
};
var csrftoken = getCookie('csrftoken');
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.setRequestHeader("X-CSRFToken", csrftoken);
xhr.send();
}
function getCookie(name) {
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
let cookie = cookies[i].trim();
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}