zoukankan      html  css  js  c++  java
  • [python]django的mode设置表结构和serializers序列化数据

    框架使用的库版本

    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":"查询成功"

    }

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

  • 相关阅读:
    jQuery教程1,隐藏p标签
    Google 和 Microsoft 对 jQuery 的支持都很好。
    在编辑器中自动换行
    调用存储过程的一些方法
    jQuery教程2隐藏p标签内容按钮
    文件的复制,移动,创建
    网站中access数据库的备份和恢复
    修改文件名称
    生成静态网页,函数,引用过程
    网页中打印文本文件
  • 原文地址:https://www.cnblogs.com/Jack-cx/p/9350959.html
Copyright © 2011-2022 走看看