DRF的ModelSerializer的使用】的更多相关文章

serializer用起来稍微麻烦,可以使用ModelSerializer,类似于django里的Form与ModelForm 1.定义ModelSerializer from rest_framework import serializers from goods.models import Goods, GoodsCategory # class GoodsSerializer(serializers.Serializer): # """ # Goods的serializ…
1.对于OneToOne.Foreignkey.choices字段可以使用source取出相关信息: class CourseSerializer(serializers.ModelSerializer): # choices字段 degree = serializers.CharField(source='get_degree_display') # ForeignKey字段 teacher = serializers.CharField(source='teacher.name') clas…
在views中添加 from django.shortcuts import render # Create your views here. from rest_framework.views import APIView from rest_framework.response import Response from app03.models import User from .serializers import * from rest_framework.viewsets import…
目录 自定义序列化(矬) Serializer类(方式繁琐) 底层序列化类 UserSerializer 视图序列化步骤 底层反序列化类 UserCreatSerializer 视图反序列化步骤 ModelSerializer类(重点) 序列化与反序列化类 UserModelSerializer 视图序列化与反序列化步骤 models模型类中自定义序列化字段 自定义序列化(矬) 通常我们后端需要将数据查出来,并返回给需要数据的人,那么就产生了一个序列化的概念 我们可以自定义序列化并返回给客户端.…
五.商品列表页 5.1.django的view实现商品列表页 (1)goods/view_base.py 在goods文件夹下面新建view_base.py,为了区分django和django rest framework的view 利用Django的view实现返回json数据 # goods/view_base.py from django.views.generic import View from goods.models import Goods class GoodsListView…
商品列表页 通过商品列表页面来学习drf django的view实现商品列表页 在goods目录下新建一个views_base.py文件,用来区分drf的view和Dajngo自带的view的区别 利用Django的view实现返回json数据 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/9/20 下午 01:16 # @Author : gao # @File : views_base.py from django.…
1.利用Django的view实现返回json数据 from django.views.generic import View from goods.models import Goods class GoodsListView(View): def get(self,request): #通过django的view实现商品列表页 json_list = [] #获取所有商品 goods = Goods.objects.all() for good in goods: json_dict = {…
使用Python3.6与Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 项目支持支付宝支付(暂不支持微信支付),支持手机短信验证码注册, 支持第三方登录.集成了sentry错误监控系统. 本小节内容: Django原生以及使用drf 完成 商品列表页 django的view实现商品列表页 本章节很重要. 通过Django的fbv cbv (class base view)都可以实现. 更建议通过基于class的view编码,面向对象.…
(转自https://www.cnblogs.com/derek1184405959/p/8768059.html)(有修改) 接下来开始引入django resfulframework,体现它的强大之处 一.首先,按照以前的做法,如果我们想把商品列表打包成JSON数据显示在首页,就是: 1.写view函数 # goods/view.py from django.views.generic import View from goods.models import Goods class Good…
0905自我总结 drf框架serializers中ModelSerializer类 基于seriallizer类进行简化 https://www.cnblogs.com/pythonywy/p/11455508.html 一.简单的使用 导入from rest_framework import serializers 与基础serializer类后续使用的作用相似 class 自定义名称(serializers.ModelSerializer): class Meta: model=对应的模型…
ModelSerializer 序列化准备: 配置 settings.py # 注册rest_framework框架 INSTALLED_APPS = [ ... 'rest_framework' ] # 配置mysql数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db10', 'USER': 'root', 'PASSWORD':'root', } } ​ """…
DRF框架中链表数据通过ModelSerializer深度查询方法汇总 一.准备测试和理解准备 创建类 class Test1(models.Model): id = models.IntegerField(primary_key=True) test_2_id= models.ForeignKey(to='Test2',on_delete='id') #这里有的创建失败了哈哈忘了会自动补全id class Test2(models.Model): id = models.IntegerFiel…
知识点:Serializer(偏底层).ModelSerializer(重点).ListModelSerializer(辅助群改) 一.Serializer 偏底层 一般不用 理解原理 1.序列化准备: 模型层:models.py from django.db import models class User(models.Model): SEX_CHOICES = [ [0, '男'], [1, '女'], ] name = models.CharField(max_length=64) pw…
前言 我们上篇文章使用到了Serializer类,可能有小伙伴说太过复杂,那么本篇就为大家带来更加简便的序列化类ModelSerializer ModelSerializer 先来看下ModelSerializer的代码结构如下: 可以看到ModelSerializer是继承自Serializer,官方是这么介绍到的 ModelSerializer只是一个常规的Serializer,只是做了以下事情 将自动填充一组默认字段 将自动填充一组默认验证程序 提供了默认的.create()和.updat…
一: rest_framework 中 serializers.Serializer的不方便之处(以下简称Serializer) a:需要定义每一个字段,并且这个字段是和models字段及其类似. b:和froms是不是很像,有没有类似ModelFroms类似的模块,简化字段的编写,当然有ModelSerializer就是这中类型 二:ModelSerializer序列化 a:view中的文件不需要修改 b:重新编写BookSerializers继承serializers.ModelSerial…
media资源路径设置  (设置好后把图片放在这个文件夹中,通过链接能访问到图片) 1.先在根目录设置一个media文件夹 2.配置settings.py,加上下面的 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 3.在urls.py路由设置 from django.views.static import serve from django.conf import settings urlpatterns =…
ModelSerializer 1.ModelSerializer类似于ModelForm 2.根据模型自动生成一组字段 3.自带实现了.update()以及.create()方法 ModelSerializer的使用 1.创建原信息   class Meta: 2.指定序列化的模型类 model = "XX" 3.序列化的字段列表  fields = ["xxx"] 4.序列化不包含指定字段的列表 exclude = ["xxx"] 5.找到外…
ModelSerializer是Serializer的子类,序列化和反序列化跟Serializer一样. ModelSerializer与常规的Serializer相同,但提供了: 基于模型类自动生成一系列字段 基于模型类自动为Serializer生成validators,比如unique_together 包含默认的create()和update()的实现 在使用ModelSerializer序列化器时,我们只需要定义好序列化器类,并指定好对应的模型类和字段即可. 例如: # 定义ModelS…
我觉得在有些应用场景下,这个操作是有用的,因为可以减少一个AJAX的请求,以增加性能. 当然,是二次请求,还是一次传输.这即要考虑用户体验,还要兼顾服务器性能. 一切是有条件的平衡吧.就算是一次传输,字段少的可以全部传,而字段多的就要自定义啦. 在以下样例里,发布单是主表,但相关的项目,组件,用户,如果默认情况下,只显示ID,很不友好. 我们可以将相关的外键名称也一并序列化啦. 重点的DRF: class UserSerializer(serializers.ModelSerializer):…
drf自定义用户认证: 登录默认 使用django的ModelBackend,对用户名和密码进行验证.但我们平时登录网站时除了用户名也可以用邮箱或手机进行登录,这就需要我们自己扩展backend 一.settings中配置 AUTHENTICATION_BACKENDS = ( 'users.views.CustomBackend', ) users.views中新建backend,对用户名或手机进行验证 二.users/views.py # users.views.py from django…
用户登录 自定义用户登录字段处理 用户的登录时通过 手机号也可以进行登录 需要重写登录验证逻辑 from django.contrib.auth.backends import ModelBackend class CustomBackend(ModelBackend): def authenticate(self, username=None, password=None, **kwargs): try: user = User.objects.get(Q(username=username)…
一 web应用模式 前后端不分离 前后端分离 二 RESTFUL API规范 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的博士论文中. RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中. 这种风格的理念认为后端开发任务就是提供数据的,对外提供的是数据资源的访问接口,所以在定义接口时,客户端访问的URL路径就表示这种要操作的数据…
一.Django的序列化方法 1.为什么要用序列化组件 做前后端分离的项目,我们前后端数据交互一般都选择JSON,JSON是一个轻量级的数据交互格式.那么我们给前端数据的时候都要转成json格式,那就需要对我们从数据库拿到的数据进行序列化. 2.表的构建 CHOICES = ((1, "python"), (2, "linux"), (3, "go")) # 书籍表 class Book(models.Model): title = models…
DRF基本程序调用一 models初步编写  1 编写model.py    from django.db import models 导入    class dbinfo(models.Model):   column= models.CharField(max_length=128)   class Meta:   db_table = dbname    verbose_name = '关系对照表' 2 初始化数据库  python3 manage.py makemigrations ap…
视图组件 1.基本视图 url(r'^publish/$', views.PublishView.as_view()), url(r'^publish/(?P<pk>\d+)/$', views.PublishDetailView.as_view()), class PublishSerializers(serializers.ModelSerializer): class Meta: model=models.Publish fields='__all__' class PublishVie…
  DjangoRestFramework学习二之序列化组件.视图组件   本节目录 一 序列化组件 二 视图组件 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组件 首先按照restful规范咱们创建一些api接口,按照下面这些形式写吧: Courses --- GET ---> 查看数据----->返回所有数据列表[{},{},] Courses--- POST --->添加数据 -----> 返回添加的数据{ } courses/1 ---…
一.背景 在之前实现过django的图片验证码,有自己实现过的,也有基于django-simple-captcha的,都是基于form表单验证,若自己实现,可以获取相应的标签name便可以获取判断,若使用django-simple-captcha只需相应配置即可.但在前后端分离的情况下,就有点摸不着头脑了,序列化时CaptchaField不管作用,百度搜索也没找到相应的办法,于是心想只有重写restframework_jwt自带的登录验证接口及注册接口,都得新增字段. 二.django-simp…
一,DRF 解析器 根据请求头 content-type 选择对应的解析器就请求体内容进行处理. 1. 仅处理请求头content-type为application/json的请求体 from django.conf.urls import url, include from web.views.s5_parser import TestView urlpatterns = [ url(r'test/', TestView.as_view(), name='test'), ] urls.py f…
Django Rest Feamework 视图和路由 DRF的视图 APIView 我们django中写CBV的时候继承的是View,rest_framework继承的是APIView,那么他们两个有什么不同呢 urlpatterns = [ url(r'^book$', BookView.as_view()), url(r'^book/(?P<id>\d+)$', BookEditView.as_view()), ] 我们可以看到,不管是View还是APIView最开始调用的都是as_vi…
Serializers 序列化组件 Django的序列化方法 class BooksView(View): def get(self, request): book_list = Book.objects.values("id", "title", "chapter", "pub_time", "publisher") book_list = list(book_list) # 如果我们需要取外键关联的字段…