视频加载失败

Django框架之序列化组件serializers

355 字
2 分钟
Django框架之序列化组件serializers

【一】前言#

  • 什么意思呢?
    • 就是我的前段想拿到由ORM得到的数据库里面的一个个用户对象
    • 我的后端想直接将实例化出来的数据对象直接发送给客户端
    • 那么这个时候,就可以用Django给我们提供的序列化方式

【二】案例#

  • 在前端获取到后端用户表里面的所有数据,并且格式是列表套字典

【0】创建模型表#

from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=32, verbose_name="姓名")
age = models.IntegerField(verbose_name="年龄")
gender_choices = (
(1, 'male'),
(2, 'female'),
(3, 'others')
)
gender = models.IntegerField(choices=gender_choices, verbose_name="性别")

【1】基于JsonResponse序列化数据#

  • 后端
def ab_ser(request):
user_queryset = models.User.objects.all()
# 返回数据格式:[{},{},,{},{},{},{}]
user_list = []
for user in user_queryset:
tmp = {
'username': user.username,
'password': user.age,
'gender': user.get_gender_display(),
}
user_list.append(tmp)
return JsonResponse(user_list, safe=False)
# return render(request, 'ab_ser.html', locals())
  • 前端
<body>
{% for user_obj in user_queryset %}
<p>{{ user_obj.name }}</p>
{% endfor %}
</body>
  • 前端接收到的数据展示
[
{"username": "dream", "password": 18, "gender": "male"},
{"username": "meng", "password": 28, "gender": "female"},
{"username": "hope", "password": 38, "gender": "others"}
]

【2】基于Django自带的serializers组件#

from django.core import serializers
def ab_ser(request):
user_queryset = models.User.objects.all()
res = serializers.serialize('json', user_queryset)
'''
serializers 模块内部会帮我们将数据全部变成JSON格式的字符串,并且内部非常的全面
'''
return HttpResponse(res)
  • 前端返回的到的数据
[
{
"model": "app01.user",
"pk": 1,
"fields": {"username": "dream", "age": 18, "gender": 1}},
{
"model": "app01.user",
"pk": 2,
"fields": {"username": "meng", "age": 28, "gender": 2}},
{
"model": "app01.user",
"pk": 3,
"fields": {"username": "hope", "age": 38, "gender": 3}}
]

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Django框架之序列化组件serializers
https://firefly.cuteleaf.cn/posts/framework/python/django/base/170django框架之序列化组件serializers/
作者
Dream
发布于
2023-07-20
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Dream
Hello, I'm Dream.
公告
欢迎来到我的博客!爱学习爱进步。
分类
标签
最新动态
站点统计
文章
300
分类
5
标签
26
总字数
640,882
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Vercel
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录