1 创建模型

  由于之前在《004 工程配置》中,已在Applications/Organizations/models中创建了一个UserInfo模型。此处引用这个模型。

  1. from django.db import models
  2. from django.contrib.auth.models import AbstractUser
  3.  
  4. from GeneralTools.BaseModel import BaseModel
  5.  
  6. class UserInfo(AbstractUser, BaseModel):
  7. openid = models.CharField(max_length=100, verbose_name='openid', null=True, blank=True, help_text='openid')
  8. mobile = models.CharField(max_length=20, verbose_name='手机', help_text='手机') # 手机是整个平台的通行证
  9. identity = models.CharField(max_length=30, verbose_name='身份证号', default='', help_text='身份证号')
  10. weixin = models.CharField(max_length=50, verbose_name='微信号', null=True, blank=True, help_text='微信号')
  11. nickname = models.CharField(max_length=200, verbose_name='用户昵称', null=True, blank=True, help_text='用户昵称')
  12. sexchoice = (
  13. (1, '男'),
  14. (2, '女'),
  15. )
  16. sex = models.IntegerField(choices=sexchoice, verbose_name='性别', null=True, blank=True, help_text='性别')
  17. province = models.CharField(max_length=30, verbose_name='省', null=True, blank=True, help_text='省')
  18. language = models.CharField(max_length=100, verbose_name='语言', null=True, blank=True, help_text='语言')
  19. city = models.CharField(max_length=30, verbose_name='市', null=True, blank=True, help_text='市(地级市)')
  20. country = models.CharField(max_length=30, verbose_name='县', null=True, blank=True, help_text='县(县级市)')
  21. photo_url = models.CharField(max_length=300, verbose_name='微信头像路径', null=True, blank=True, help_text='微信头像路径')
  22. subscribe_scene = models.CharField(max_length=50, verbose_name='用户关注的渠道来源', null=True, blank=True,
  23. help_text='用户关注的渠道来源')
  24.  
  25. class Meta:
  26. db_table = 'UserInfo'
  27. verbose_name_plural = '001 用户信息表'

2 创建序列化器

  在Examples/views目录下创建一个文件serializer1.py,先创建一个序列化器。

  1. from rest_framework import serializers
  2. from Applications.Organizations.models import UserInfo
  3.  
  4. class UserInfoSerializer1(serializers.ModelSerializer):
  5. """
  6. ModelSerializer序列化器,一般与表相关
  7. """
  8.  
  9. class Meta:
  10. model = UserInfo # 指明模型名
  11. fields = '__all__' # 指明使用模型中所有字段

3 编写视图

  序列化器文件中,增加一个视图,内容如下:

  1. from rest_framework.viewsets import ModelViewSet
  2.  
  3. class UserInfoViewSet1(ModelViewSet):
  4. """
  5. 视图
  6. """
  7. queryset = UserInfo.objects.all()
  8. serializer_class = UserInfoSerializer1

4 定义路由

  DRF提供了一种自动生成对模型操作的所有查询,新增,删除,修改等路由。使用格式如下:

  1. from django.urls import path
  2. from Applications.Examples.views import ExpHome, CoreAPI
  3. from rest_framework.routers import DefaultRouter
  4. from .views.Serializer1 import UserInfoViewSet1
  5.  
  6. urlpatterns = [
  7. path('ExpHome/', ExpHome.ExoHome.as_view()),
  8. path('CoreAPI/', CoreAPI.CoreAPI.as_view()),
  9. path('LoginHome/', CoreAPI.LoginHome.as_view()),
  10. ]
  11. router = DefaultRouter() # 可以处理视图的路由器
  12. router.register('UserInfo1', UserInfoViewSet1) # 向路由器中注册视图集
  13.  
  14. urlpatterns += router.urls # 将路由器中的所以路由信息追到到django的路由列表中

5 运行测试

  运行工程,可以看到以下效果,UserInfo1共生成list、create、read、update、partial_update、delete六个接口,几乎包含了数据库操作的增加、删除、修改、查询等方法。而且,这些接口都直接可以连接数据库进行测试。

0008 基于DRF框架开发(01 DRF开发的基本流程)的更多相关文章

  1. Java基于ssm框架的restful应用开发

    Java基于ssm框架的restful应用开发 好几年都没写过java的应用了,这里记录下使用java ssm框架.jwt如何进行rest应用开发,文中会涉及到全局异常拦截处理.jwt校验.token ...

  2. 基于Spring框架的Web应用开发笔记 - Outline

    Motivation 最近的工作涉及Web框架搭建,在了解公司原有采用框架基础上对Web开发技术栈做了一次升级,在次做记录. Audience J2EE Web Application Develop ...

  3. 基于“MVC”框架集设计模式,开发用户管理系统!

    MVC----(Model View Controller)设计模型: M:表示业务数据和业务规则.包括DAO(beans).DBHelper(DBHelper),用于封装数据库连接,业务数据库处理. ...

  4. 基于SpringBoot框架企业级应用系统开发全面实战

    Eclipse 安装spring-tool-suite教程,并创建一个新的springboot项目 使用SpringBoot构建项目,加载SSM整合的applicationContext.xml的注解 ...

  5. 基于MVC框架的JavaWeb网站开发demo项目(JSP+Servlet+JavaBean)

    1.环境配置 Windows10+Eclipse2020+jdk8+Tomcat9+MySQL8+Navicat10 2.需求分析 ①用户登录注册注销(查找.增加) ②显示用户列表(查找) ③显示用户 ...

  6. 微信小程序的开发——01小程序的执行流程是怎样的?

    作者:叶小钗 转载至:https://www.cnblogs.com/yexiaochai/p/9346043.html 我们这边最近一直在做基础服务,这一切都是为了完善技术体系,这里对于前端来说便是 ...

  7. Windows下React Native开发01 -- Android开发环境搭建

    1.安装jdk 推荐将JDK的bin目录加入系统PATH环境变量(自己百度下怎么配置). 2.安装SDK 直接安装 Android Studio  推荐从AndroidDevTools下载.(也可以直 ...

  8. DRF框架之序列化器初体验

    首先,我们需要明白序列化和反序列化的过程指的是什么. 序列化操作:将模型数据 ---> 字典数据 --->JSON数据(响应JSON数据的操作) 反序列化操作:将JSON数据 ---> ...

  9. 第二章、drf框架 - 请求模块 | 渲染模块 解析模块 | 异常模块 | 响应模块 (详细版)

    目录 drf框架 - 请求模块 | 渲染模块 解析模块 | 异常模块 | 响应模块 Postman接口工具 drf框架 注册rest_framework drf框架风格 drf请求生命周期 请求模块 ...

  10. python 全栈开发,Day95(RESTful API介绍,基于Django实现RESTful API,DRF 序列化)

    昨日内容回顾 1. rest framework serializer(序列化)的简单使用 QuerySet([ obj, obj, obj]) --> JSON格式数据 0. 安装和导入: p ...

随机推荐

  1. Go语言实现:【剑指offer】题目汇总

    所列题目与牛客网<剑指offer>专题相对应. 数组: 和为S的两个数字 和为S的连续正数序列 连续子数组的最大和 数字在排序数组中出现的次数 数组中只出现一次的数字 旋转数组的最小数字 ...

  2. 必知必会之Lambda表达式

    Java是一门强大的面向对象的语言,除了8种基本的数据类型,其他一切皆为对象.因此,在Java中定义函数或方法都离不开对象,也就意味着很难直接将方法或函数像参数一样传递,而Java8中的Lambda表 ...

  3. 制作一个docker镜像:mysql-8-x64-linux

    因为个人学习需要,为软件系统的虚拟容器化,以下将mysql制作为docker镜像,并记录下详细步骤. 欢迎大家学习交流和转载,同时写作不易,如果各位觉得不错,请点赞支持. 备注:以下代码和文章,欢迎复 ...

  4. k8s系列---基于canal的网络策略

    文章拷自:http://blog.itpub.net/28916011/viewspace-2215383/ 加上自己遇到的问题简单记录 安装文档:https://docs.projectcalico ...

  5. df du 文件空间管理 命令

     df  可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. du 可以查看文件及文件夹的大小.     df:常用   df -h    以易读形式显示 磁盘空间 linux ...

  6. sed知识及常用用法梳理

    1.sed命令简介及其参数说明 sed流编辑器,擅长对文本进行增删改查,过滤指定的字符串和取指定行,也可以在行中字符串前后插入内容,功能非常强大. 注意:sed默认只支持基本的正则表达式,如果要想支持 ...

  7. vue路由+vue-cli实现tab切换

    第一步:搭建环境 安装vue-cli cnpm install -g vue-cli安装vue-router cnpm install -g vue-router使用vue-cli初始化项目 vue ...

  8. go程序基于阿里云CodePipeline的一次devops实践

    背景 最近朋友有个项目代码托管用的码云,测试服务器(阿里云ECS)只有一台,三四个人开发,于是想基于阿里云的CodePipeline快速打造一套自动化cicd的流程,使用docker来进行多套环境部署 ...

  9. 复杂系统架构设计<1>

    这两天开始读由Edward Crawley(爱德华 克劳利).Bruce Cameron(布鲁斯 卡梅隆).Daniel Selva(丹尼尔 塞尔瓦)著作的系统架构,一开始看目录以为是介绍系统软件架构 ...

  10. MySQL安全管理

    数据库服务器通常包含关键的数据,确保这些数据的安全和完整需要利用访问控制. 一.访问控制 MySQL服务器的安全基础:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少. 访问控制:你需要给用 ...