res = models.Book.objects.only('title')
res = models.Book.objects.defer('title')
res = models.Book.objects.select_related('publish')
for i in res:
# print(i.title)
print(i.publish)
res = models.Book.objects.prefetch_related('publish','authors')
for i in res:
# print(i.title)
print(i.publish)
.get_字段名_display
:获取数字对应的值得统一句式,否则只能获得数字# models.py
class User(models.Model):
username = models.CharField(max_length=64)
password = models.IntegerField()
gender_choices = (
(1,'男'),
(2,'女'),
(3,'其他'),
)
gender = models.IntegerField(choices=gender_choices)
# test.py
user_obj = models.User.objects.get(pk=1)
user_obj1 = models.User.objects.get(pk=4)
print(user_obj.gender) # 1
print(user_obj1.gender) # 4
print(user_obj.get_gender_display()) # 男
print(user_obj1.get_gender_display()) # 4
JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
<!--xxx.html-->
<script>
$('#d4').on('click',function () {
// 开启ajax语法
$.ajax({
url:'', // 数据提交的后端地址 不写就是往当前页面提交 也可以写后缀 也可以写全称 跟actions一样
type:'post', // 提交方式 默认是get请求
data:{'i1':$('#d1').val(),'i2':$('#d2').val()}, // 提交的数据
success:function (data) { // 形参data就是异步提交之后后端返回结果
$('#d3').val(data) // 回调机制需要做的事情#
alert(data)
}
})
})
</script>
# views.py
def xxx(request):
# print(request.is_ajax()) # 判断当前请求是否是ajax请求
# print(request.POST) # ajax发送的post请求 普通的键值对也在request.POST中获取
if request.is_ajax():
# i1 = request.POST.get('i1')
# i2 = request.POST.get('i2')
# res = int(i1) + int(i2)
# return HttpResponse(res) # 给异步回调函数 success
# return render(request,'xxx.html') # 给异步回调函数 success
return redirect('https://www.baidu.com') # 给异步回调函数 success
return render(request,'xxx.html')
username=wick&password=123
,django后端会自动解析并封装到request.POST中form表单无法发送该格式数据,只能通过ajax
contentType:‘application/json‘,
:设置数据类型格式data:JSON.stringify({‘username‘:‘jason‘,‘password‘:‘123‘}),
:序列化数据<script>
// 传json格式的数据
$('#d1').click(function () {
$.ajax({
url:'',
type:'post',
contentType:'application/json',
data:JSON.stringify({'username':'jason','password':'123'}),
success:function (data) {
alert(123)
}
})
</script>
var MyFormData = new FormData();
,该对象可以传输文件数据,也支持普通键值对$(‘#d1‘)[0].files[0]
:input框中文件对象contentType:false,
:MyFormData对象内部自带编码 django后端能够识别processData:false,
:不需要处理数据<script>
// 传文件
$('#d1').click(function () {
// 先生成一个内置对象
var MyFormData = new FormData();
// 1. 先添加普通的键值
MyFormData.append('username','jason'); // 添加了一组普通的简直对
MyFormData.append('password','123');
MyFormData.append('hobby',['read','run']);
// 2. 添加文件数据
MyFormData.append('myfile',$('#d2')[0].files[0]); // 如何获取input框中文件对象$('#d1')[0].files[0]
$.ajax({
url:'',
type:'post',
data:MyFormData,
// 发送文件必须要指定的两个参数
contentType:false, // MyFormData对象内部自带编码 django后端能够识别
processData:false, // 不要处理数据
success:function (data) {
}
})
})
</script>
def ser(request):
# 1. 拿到用户表里面的所有的用户对象
user_list=models.User.objects.all()
# 2. 导入内置序列化模块
from django.core import serializers
# 3. 调用该模块下的方法,第一个参数是你想以什么样的方式序列化你的数据
ret=serializers.serialize('json',user_list)
return HttpResponse(ret)
原文:https://www.cnblogs.com/1012zlb/p/12005871.html