Django-发送ajax和多对多操作

Django-03

1.发送Ajax请求

1.在Javascript中绑定ajax事件:

<script>
	$('#id').click(function(){  // 绑定点击事件
        $.ajax({
            url: '/ajax',  
            type: 'POST',
            data: {username: "xxx", username:"****"},  // 可使用form.serialize()序列化表单
            success: function(data){
                ....
            }
        })
    })
</script>

ps: 1. $.get(url="", data={}, success: function(data){...}) -> 发送get请求

2.$.post(url="", data={}, success: function(data){...}) -> 发送post请求

3.建议在处理views对ajax的返回值的时候. 永远让服务器返回一个字典 -> return HttpResponse(json.dumps(dict))

2.Js序列化. 反序列化

li = [1, 2, 3, 4]  对象-> 字符串 s = JSON.stringify(li) -> '[1, 2, 3, 4]'
				 字符串 -> 对象 JSON.parse(s) -> [1,  2, 3, 4]

2.创建多对多的两种方式

1.自动创建关系表

class Host(models.Model):
    nid = models.AutoField.objects(primary_key=True)
    host = models.CharField.objects(max_length=32)

class Application(models.Model):
    name = models.CharField.objects(max_length=32)
    appliction = models.ManyToManyField(to='Host')  # 创建多对多关系

2.自定义关系表

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):  # 主动创建第三张表
    host = models.ForeignKey('Host', to_field='nid')
    application = models.ForeignKey('Application', to_field='id')

3.操作多对多关系表

# 无法直接对第三张表进行操作
obj = Application.objects.get(id=1)
obj.name

# 对第3张表操作
# 增
obj.application.add(1) 
obj.application.add(1, 2, 3)
obj.application.add(*[1, 2, 3, 4])  # 添加(1, 1) (1, 2) (1, 3) (1, 4)

# 删
obj.r.remove(*[1, 2, 3, 4])
obj.r.clear()  # 清空id=1的所有数据

# 更新
obj.r.set([3,5,7])  # 设置更新

# 查
obj.r.all()  # 所有相关的Host对象的QuerySet


posted on 2023-03-11 00:13  huxiaofeng  阅读(28)  评论(0)    收藏  举报

导航