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
本文来自博客园,作者:{Max},仅供学习和参考
posted on 2023-03-11 00:13 huxiaofeng 阅读(28) 评论(0) 收藏 举报
浙公网安备 33010602011771号