框架使用的库版本

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

}

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

[python]django的mode设置表结构和serializers序列化数据的更多相关文章

  1. Python - Django - ORM 多对多表结构的三种方式

    多对多的三种方式: ORM 自动创建第三张表 自己创建第三张表, 利用外键分别关联作者和书,关联查询比较麻烦,因为没办法使用 ORM 提供的便利方法 自己创建第三张表,使用 ORM 的 ManyToM ...

  2. python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API

    python  Django教程  之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码 ...

  3. sqlserver 复制表结构(可以含有数据 或 只要表结构)

    sqlserver 复制表结构(可以含有数据 或 只要表结构) SELECT * INTO bb FROM aa(NOLOCK) WHERE 1=0

  4. python——Django(ORM连表操作)

    千呼万唤始出来~~~当当当,终于系统讲了django的ORM操作啦!!!这里记录的是django操作数据库表一对多.多对多的表创建及操作.对于操作,我们只记录连表相关的内容,介绍增加数据和查找数据,因 ...

  5. Django模型系统——ORM表结构对应关系

    对于数据库来说一般表结构只会有三种对应关系,分别是一对一.一对多和多对一,下面分别介绍: 1.一对多 何为一对多,例如一个学生只可能有一个班级,一个班级却又多个学生,班级表和学生表就是一对多的关系. ...

  6. python 基础 9.6 设计表结构

    一. 设计表结构    在操作设计数据库之前,我们先要设计数据库表结构,我们就来分析分析经典的学生,课程,成绩,老师这几者他们之间的关系,我们先来分析各个主体他们直接有什么属性,并确定表结构,在实际开 ...

  7. django项目一 CRM表结构

    from django.db import models from django.contrib import auth from django.core.exceptions import Perm ...

  8. 【Django】一对多表结构

    1.创建project数据库表 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.co ...

  9. Linux下开发python django程序(模板设置和载入数据)

    1.添加templates文件夹 2.修改settings.py文件 import os #引用 os模块 BASE_DIR = os.path.dirname(os.path.dirname(os. ...

随机推荐

  1. python3中文乱码解决方法

    解决方法: 修改pycharm配置: File->Settings->Editor->File encodings 把Global encoding设置成GBK即可

  2. Python语句,表达式的区别?

    参考了网上的文章,说 表达式的结果是值,对象 比如1+2, 是表达式 具体根据运算符不同有算术,逻辑,比较等等类型的表达式 语句是控制程序走向,不产生值 例如if/else等 参考: https:// ...

  3. 博客调网易云歌单JS

    <!--音乐--> <link rel="stylesheet" href="https://blog-static.cnblogs.com/files ...

  4. Mysql集群搭建(多实例、主从)

    1 MySQL多实例 一 .MySQL多实例介绍 1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307,3308),运行多个MySQL服务进程,通 ...

  5. Oracle实时数据抽取项目问题总结

    Oracle实时数据抽取项目问题总结 项目背景介绍 项目主要是将Oracle.MySQL.SQLServer.Db2等其他数据库的实时变更数据同步到其他异构数据库中.本篇文章主要是讨论oracle的实 ...

  6. 使用Jacoco统计服务端代码覆盖情况实践

    一.背景 随着需求的迭代,需求增加的同时,有可能会伴随着一些功能的下线.如果不对系统已经不用的代码进行梳理并删除不需要的代码,那么就会增加系统维护成本以及理解成本.但经历比较长的迭代以及系统交接,可能 ...

  7. JAVA 150道笔试题知识点整理

    JAVA 笔试题 整理了几天才整理的题目,都是在笔试或者面试碰到的,好好理解消化下,对你会有帮助,祝你找工作顺利,收到满意的 offer . 1.Java 基础知识 1.1 Java SE 语法 &a ...

  8. break和continue关键字

    什么是break break 跳出最里层的循环,并且继续执行该循环下面的语句 就是强制退出循环 示例 package struct; public class ForDemo05 { public s ...

  9. 【UE4 C++】调用外部链接库 lib静态库

    简述 本例以插件形式测试 使用Lib引用,打包程序运行不用再拷贝lib文件 需要 lib 文件和 .h 头文件 lib部分的代码 .h 头文件 #pragma once #ifndef __MYTES ...

  10. 【数据结构与算法Python版学习笔记】树——相关术语、定义、实现方法

    概念 一种基本的"非线性"数据结构--树 根 枝 叶 广泛应用于计算机科学的多个领域 操作系统 图形学 数据库 计算机网络 特征 第一个属性是层次性,即树是按层级构建的,越笼统就越 ...