指南:本文的首席执行官注释将介绍有关JS如何传递给Django的相关内容。我希望这对每个人都会有所帮助。让我们来看看。
在JS中通过Ajax
您使用模板,在Python中定义它,然后返回到HTML模板,不需要JS
当您说JS的分配方法时,必须首先解释JS的数值类型:基本类型和参考类型。
1.基本类型
基本数据类型是:未定义,布尔值,数字,字符串,null。基本类型存储在堆栈区域中,并且访问是按值访问的,这意味着您可以操作在变量中保存的实际值。
当分配数据的基本类型时,它是一个实际值。A和B之间没有连接。B由A复制,并且彼此独立。(字面类型是基本类型)
var a = 10;
var b = a;
console.log(a+',''+b);// 10,10
a ++;
console.log(a+','+b)// 11,10
2.报价类型
参考类型是指对象。它可以具有属性和方法,我们可以修改其属性和方法。参考对象的方法是:堆栈中对象变量的名称标记为名称的名称和存储对象在堆中的地址,数据存储在堆中。
该对象使用对分配的引用。当我们将对象分配给新变量时,该对象的地址实际上是对象的地址,而不是堆中的数据,也就是说,两个对象指向同一存储空间。无论哪个对象更改,存储空间的内容实际上都会更改。因此,这两个对象是链接。
3.数组是参考类型
让我们首先看一个示例:
var a = [1,2,3];
var b = a;
a = [4,5,6];
警报(b);// [1,2,3]
似乎数组是基本的类型。
var a = [1,2,3];
var b = a;
a.pop();
警报(b);// [1,2]
这怎么样?因为:(知道解释)
a = [4,5,6];//参考本身的更改,数组对象没有更改,A和B没有关系。
a.pop();//数组对象已更改,引用尚未更改。
b = a;//此操作后,b直接指向数组对象,而不是b指向A,而a则指向阵列。
//因此,更改参考不会影响B参考,并更改数组数。
这个问题与我之前的todo list中所述:
var tasks = this.state.data;
tasks = tasks.filter(function(i){
返回i.index!= taskid;
});
由于过滤器函数返回一个新数组,尽管此时仍在任务中收到了一个新数组,但此时,任务点已经是一个新数组,因此任务和数据不再相关。(Concat还返回新数组)
推送和拼接功能在原始数组上操作。原始数组中的SO称为操作是指不变,因此任务和数据是关联的。
4.参数传输
JS的功能参数传输是值传输。
当引入基本参数类型时:它只是将内容复制到i,而我和年龄无关紧要。
功能设置(i)
{{{
警报(i);// 24
i = 181;
警报(i);// 18,我改变不会影响外界
};
var年龄= 24;
(年龄);
警报(年龄);// 24
当传递参数是参考类型时:
函数setName(obj)
{{{
obj.name ='haha';
};
var obj2 = new Object();
setName(obj2);
警报(obj2.name);// 哈哈
这看起来像是参考,因为obj.name已经改变,但实际上并不值得。因为OBJ2本身的值是新对象的地址,因此该地址已传递。
这是阿里2014年的书面测试问题:
var a = 1;
var obj = {
B:2
};
var fn = function(){};
fn.c = 3;
功能测试(X,Y,Z){
x = 4;
y.b = 5;
Z.C = 6;
返回z;
}
测试(a,obj,fn);
警报(a + obj.b + fn.c);
答案:12
首先,在测试中的实际参数中,A是基本类型(复制一个值)。OBJ是对象(指向地址,您也移动我),当然不是基本类型。执行测试时,将X分配给4(与A无关1),y的b分配了5,然后obj b也变为5,z的c变为6至6:fn c也将为6。因此,警报的结果应为1+5+6 = 12。,测试不会返回Z,Z仍在更改)。
参考如下
如果该项目的目录是:
我的网站:
manage.py
我的网站:
__init__.py settings.py urls.py wsgi.py
博客(已建立的应用程序):
models.py views.py test.py __init__.py模板
开始配置:
1.在外部Mysite目录中(即项目的根目录)
2.打开设置。py并添加:
导入操作系统
static_url ='/static/'
staticfiles_dirs =(
(((((
3.打开urls.py并添加(注意:如果在博客应用程序中新创建一个urls.py文件,则应将其添加到博客目录中的urls.py文件中。我曾经在此PIT中纠结许久):
导入设置
urlpatterns =模式(
url(r'^static/(?ppath。*)$','django.views.static.serve',
{'document_root':settings.static_root}),
治愈
使用:
假设在模板中导入外部/home/fudaoji/mysite/js/jequery.js文件(存储在模板文件中),那么您可以直接直接可以直接为
脚本类型=“ text/javascript” src ='https://www.shouxicto.com/stative/js/jqury.js'/javascript
Django模板变量属于背景服务器,JS来自前台,不能分配给它们。您应在服务器段中分配一个值,然后将其传递到首页。render_to_response可以添加模板变量。它可以直接在页面上使用。您可以检查render_to_response的功能的使用。
url ='管理员/操作?名称= xxxpwd = xxx'
在上述格式中,名称和PWD是HTML中的ID,例如输入ID.xxx表示可以固定的值或JS获得的输入框的值。
Python对象转换为JSON对象。有一种更好的方法,您不应在您说的周期中实施,如下所示
在视图中,
来自django.core导入服务器
datax = [List1 [],List2 [] .....]
data = serializers.serialize('xml',datax)
返回render_to_response('index.html',{'title':'test','list':data,'row':row':row,'col's})
在index.html中
脚本类型='text/javascript'
var list = {list}};
/脚本
------------------------------------------------------------------------------------------------------------------------------------------------------------
上面的代码只是随意编写的,没有测试,但是您不能使用串行序列,您可以打百多:django serializers,许多示例
结论:以上是首席CTO的所有内容都注明了JS如何传递给Django到Django的内容。感谢您阅读本网站的内容。我希望这对您有帮助。有关JS如何将价值传递给Django的更多信息,请不要忘记在此站点上找到它。