网页编程-Djiango(二)

一、初始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 对象            

  

原文地址:https://www.cnblogs.com/crazytao/p/7765275.html