[python]django的mode设置表结构和serializers序列化数据

本文介绍如何使用Django创建用户表,并通过序列化技术实现数据输出。包括定义模型、注册表、生成数据库表及序列化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

框架使用的库版本

python3.6.5
Django-2.0.6
djangorestframework-3.8.2
mysqlclient-1.3.12

 

1.项目结构声明,数据库在setting.py配置(略)

--TestProject

-----apitest(创建的应用)

-----manage.py(自动生成)

-----TestProject(自动生成)

2.创建model文件

cd /TestProject/apitest

mkdir models    #创建model文件夹

cd /models/     #到文件夹下创建model文件

touch login_model.py  #创建一个给登录相关接口使用的model

3.login_model.py   #编辑文件

添加一个用户表,表名为tbl_user

# -*- coding: utf-8

from django.db import models
# Create your models here.



# 用户表
class tbl_user(models.Model):

    user_name = models.TextField(max_length=10)
    email = models.TextField(max_length=50,default='')
    phone=models.CharField(max_length=11,default='')
    password=models.TextField(max_length=30,default='')
    token_value=models.TextField(max_length=100)
    status=models.CharField(max_length=100)
    creat_time = models.DateTimeField()

    # desc排序数据
    class Meta:
        ordering = ['-creat_time']  

  

3.1前面字段名,后面是字段类型以及长度,可以看下https://www.cnblogs.com/lhj588/archive/2012/05/24/2516040.html,感谢这位作者~写的挺详细,也解决了我一些问题,

如下个别加了default='',是因为之前就创建好了这个表,有些字段后加的,所以之前数据设置为空default=''

3.2后面又写了排序,这样是,在写接口时查询数据以desc的排序查

4.创建好这个用户表后,在创建应用的目录下 admin.py注册这个表

from django.contrib import admin

from  ApiSoftware.modes import login_models

# Register your models here.
admin.site.register(login_models.tbl_user)

5.然后用命令把表生成到数据库(命令随版本)

cd 到项目的根目录,就是有manage.py的目录

python manage.py makemigrations

python manage.py migrate

这样表就用不到setting配置的数据库中啦,进数据库时表名会变更为 应用名_tbl_user

 

6.serializers序列化出数据

首先说下我用serializers的场景,如果写一个查询接口,让接口输出学生表男生的所有个人信息,那么数据必然是多个的,这样需要把每个学生的个人信息存在字典里,多个的话就把多个学生(多个字典存在list中)

serializers关联model

上面我们创建了用户表,这时候创建一个serializers关联model,fields中的字段是指根据查询条件序列化出哪些数据,

from rest_framework import serializers

from ApiSoftware.modes.login_models import tbl_user


class ProductSerializer(serializers.ModelSerializer):
    class Meta:

        model = tbl_user
        fields = ('user_name', 'emal', 'phone')

 举个栗子,第一句代码从上面创建的tbl_user表查询出男生的数据,然后再调用上面写的序列化类,取出男学生的user_name,email,phone这些字段值:

products = test.tbl_user.objects.filter(Sex='男')
serializer = ProductSerializer(products, many=True)

应用到response中就是把serializers变量传给返回json的某个key的value,如下:

{

"status":"ok"

"user":"[{"user_name":"小明","emal:"123@qq.com","phone":"12345"},{"user_name":"小张","emal:"12344@qq.com","phone":"123456"},{"user_name":"小马","emal:"12344555@qq.com","phone":"12345677"}]"

"message":"查询成功"

 

}

具体的写接口应用后面一篇介绍呀~  若有理解不正确的,多多指教~

转载于:https://www.cnblogs.com/Jack-cx/p/9350959.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值