一、初始Ajax
ajax的写法:
$.ajax({
url:'/host',
type:'POST'
data:{'k1':123,'k2':'root'}
success:function(data){ }#执行成功后自动触发这个函数 })
ajax的使用:
#在JavaScript中写jquery
$('#ajax_submit').click(function(){
$.ajax({
url:'/ajax_text',
type:'GET'
data:{'user':'root','pwd':'234'}
success:function(data){
alert(data)
}#执行成功后自动触发这个函数 })
一些注意的地方:
在JavaScript中将字符串转换为对象:
JSON.parse(data)
对象转化为字符串:
JSON.stringfy(data) 建议:永远让服务端返回一个字典
return HttpResponse(json.dumps(字典)) ajax 将form中的数值打包:
data:$('#add_form').serialize()
当数据有列表时,加入traditional
加入dataType 可以自动将字符串转换为json对象形式
$.ajax({
url:'/host',
type:'POST'
data:{'k1':123,'k2':[1,2,3]}
dataTpye:json
traditional:True
success:function(data){ }#执行成功后自动触发这个函数
error:function(){}#未知错误时 })
二、多对多
创建多对多:
方式一:自定义关系表
class Host(models.Model):
nid = models.AutoField(primary_key=True)
hostname = models.CharField(max_length=32) class Application(models.Model):
name = models.CharField(max_length=32) class HostTOApp(models.Model):
hobj = models.ForeignKey(to='Host',to_field='nid')
aobj = models.ForeignKey(to='Application',to_field='id')
方式二:自动创建关系表
class Host(models.Model):
nid = models.AutoField(primary_key=True)
hostname = models.CharField(max_length=32) class Application(models.Model):
name = models.CharField(max_length=32)
r = models.ManyToManyField('Host')
操作:
1.
HostTOApp.objects.create(hobj_id = 1, aobj_id = 2) #但是自动创建的无法直接对第三张表进行操作 2.
添加:
obj = Application.objects.get(id=1)
obj.r.add(1)
obj.r.add(2,3)
obj.r.add(*[1,2,3,4])
删除:
obj.r.remove(1)
obj.r.remove(2,3)
obj.r.remove(*[1,2,3,4]) obj.r.clear() 更新数据
obj.r.set([3,5,7]) 获取所有相关应用的主机列表:
obj.r.all() queryset 对象