框架使用的库版本

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. html网页乱码

    html乱码原因与网页乱码解决方法   html乱码原因与网页乱码解决方法,浏览器浏览网页内容出现乱码符合解决篇(html中文乱码) 造成html网页乱码原因主要是html源代码内中文字内容与html ...

  2. [转载]提升SQLite数据插入效率低、速度慢的方法

    转载地址:http://blog.csdn.net/chenguanzhou123/article/details/9376537#,如果有侵犯原创,请留言告知,本人会及时删除. 前言 SQLite数 ...

  3. 10.11 HTTPS

    没有HTTPS的抓包截图 HTTPS=HTTP + TLS/SSL https 实现过程如下 1.客户端发起HTTPS请求 rewrite www.baidu.com https://www.baid ...

  4. nginx禁止IP访问系统

    server { listen 80 default; server_name _; if ($host ~ "\d+\.\d+\.\d+\.\d") { return 404; ...

  5. 【Docker】(9)---每天5分钟玩转 Docker 容器技术之镜像

    镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器.为什么我们要讨论镜像的内部结构? 如果只是使用镜像,当然不需要了解,直接通过 docker 命令下载和运行就可以了. 但如 ...

  6. 从零入门 Serverless | 一文搞懂函数计算及其工作原理

    作者 | 孔德慧(夏莞) 阿里云函数计算开发工程师 什么是函数计算 大家都了解,Serverless 并不是没有服务器,而是开发者不再需要关心服务器.下图是一个应用从开发到上线的对比图: 在传统 Se ...

  7. ArrayList和LinkedList、及Vector对比分析

    ArrayList和LinkedList 底层结构 两者的差别主要来自于底层的数据结构不同,ArrayList是基于数组实现的,LinkedList是基于双链表实现的. 接口实现 LinkedList ...

  8. 【转载】[经验] 嵌入式stm32实用的排序算法 - 交换排序

    Ⅰ.写在前面 前面写了关于ADC采集电压的文章,大家除了求平均的方式来处理采样值,还有没有使用到其他的方式来处理采集值呢? 在某些情况下就需要对一组数据进行排序,并提取头特定的数据出来使用. 排序的应 ...

  9. Windows内核开发-10-监听对象

    Windows内核开发-10-监听对象 Windows内核除了可以监听进程,线程.dll还可以监听特定的对象和注册表.这里先讲一下监听对象. 监听对象 内核提供了一种可以监听对特定的对象类型的句柄进行 ...

  10. Less-25 preg_replace2

    Less-25: 核心语句: 各种回显也均有. 通过blacklist,我们可以发现,本题屏蔽了and和or. preg_replace函数中正则表达式后面的i是一个修饰符,代表正则匹配时不区分大小写 ...