1.明确处理对象,在restframework的处理过程当中,如果是针对model写视图的话,queryset是要待展示的对象集,serializer_class是对每一个对象的所要使用的处理方式。
class GuideWordViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
"""文章索引"""
queryset = GuideWord.objects.all()
serializer_class = GuideWordSerializer
2.反序列化,我所做的反序列化是针对外键使用的,当一个model中有外键的时候,设置好related_name,然后在序列化的过程当中就可以令属于同一个外键对象的对象在同一个外键对象的序列数据中展示,但是该字段的名称应该为related_name,然后还有要注意的一点就是序列化过程当中一些不必要的字段可以忽略掉。
company = models.ForeignKey(Company, related_name='company_video', verbose_name='公司', blank=True, null=True) (model中的外键字段)

class GuideVideoSerializer(serializers.ModelSerializer):
class Meta:
model = GuideVideo
fields = ('id', 'title', 'video', 'country',) class ReCompanySerializer(serializers.ModelSerializer):
company_video = GuideVideoSerializer(many=True, read_only=True) class Meta:
model = Company
fields = ('id', 'name', 'country', 'image', 'company_video',)
3.model层面,可以通过重写save方法使得数据通过处理后保存到数据库当中我碰到的情况是使用DjangoUeditor上传图片和视频的时候保存到数据库的数据中包含双引号,结果在序列化的时候会添加转义字符,这样在前端读取的资源的时候有些不方便,所以我就对model的save方法进行了改写,在字段存进数据库之前将该字段数据中的双引号替换为单引号,这样在后续的序列化过程中就不用被强制添加转义字符反斜杠了。
    def save(self, *args, **kwargs):
self.content = self.content.replace('"', "'")
return super(GuideWord, self).save(*args, **kwargs)
4.再一个就是DjangoUeditor的上传路径问题了,当在xadmin中集成了ueditor之后,只要在adminx.py中定义一个class ModelAdmin类,在其中定义style_fields = {'field': 'ueditor'}然后在对应注册对象中加入这个ModelAdmin类,就可以在xadmin后台编辑该字段时使用富文本编辑器了。说回正题,DjangoUeditor还需要在model中对需要的字段定义为UEditorField,该类型继承自TextField,其中有图片和附件的上传路径配置,但是没有直接给出视频的上传路径配置,然后看github的编辑器的介绍查看到了上传视频的路径配置,只需要对upload_settings中设置为:

upload_settings={'imageMaxSize': 1204000,
'videoPathFormat': "guide/videos/%(basename)s_%(datetime)s.%(extname)s"}

关于DjangoUeditor上一篇文章中也有介绍,有需要的可以去看一哈。。。

restframework框架写api中的个人理解以及碰到的问题的更多相关文章

  1. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  2. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  3. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  4. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  5. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  6. Flask中endpoint的理解

    在flask框架中,我们经常会遇到endpoint这个东西,最开始也没法理解这个到底是做什么的.最近正好在研究Flask的源码,也就顺带了解了一下这个endpoint 首先,我们看一个例子: @app ...

  7. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  8. 测开大佬告诉你:如何5分钟快速创建restful风格的API接口-使用django restframework框架

    一.思考❓❔ 1.创建API接口难吗? 软件测试工程师: 只测过API接口, 从没创建过 应该需要掌握一门后端开发语言和后端开发框架吧!? 脑容量有限,想想就可怕 2.如何创建API接口呢? 使用Dj ...

  9. .NET Core WEB API中接口参数的模型绑定的理解

    在.NET Core WEB API中参数的模型绑定方式有以下表格中的几种: 微软官方文档说明地址:https://docs.microsoft.com/zh-cn/aspnet/core/web-a ...

随机推荐

  1. IfcAxis2Placement3D

    The IfcAxis2Placement3D provides location and orientations to place items in a three-dimensional spa ...

  2. Python的log

    关键代码 调用方: from Logger import MyLogger import logging import sys, os def getLogger(): # get the file ...

  3. IDEA中提示配置jdk1.8

    问题描述:运行Java Web项目时,IDEA中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除 解决方法:1. 打开[File]—[Project Structure] ...

  4. 在OpenShift 3.11环境开启多网络平面

    1.整体架构 Multus CNI是OpenShift的容器网络接口(CNI)插件,可将多个网络接口附加到Pod. 通常,在OpenShift中,每个Pod仅具有一个网络接口(除了回送),Multus ...

  5. es查询和更新 语句示例

    文档目录: https://www.elastic.co/guide/index.html GET _search { "query": { "match_all&quo ...

  6. POWER 740硬盘更换步骤

    把mirror解掉,再从rootvg里面提出来,再用diag确认下,再用命令删掉hdisk1,更换 更换前的准备 1.查看报错日志. 执行errpt列出报错条目 IDENTIFIER TIMESTAM ...

  7. 使用vue搭建应用四引入axios

    Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中 特性 从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 P ...

  8. 使用HOSTNAMECTL配置主机名

    hostnamectl工具是用来管理给定主机中. 查看所有主机名 请运行下面的命令查看所有当前主机名: 〜] $ hostnamectl status 如果未指定任何选项,默认则使用status选项对 ...

  9. mysql报错 常见 1045 10061

    报错1045: 远程没有设置用户远程访问的权限 解决方案: 进行授权(红色是你的密码) 如果想root用户使用password从任何主机连接到mysql服务器的话. GRANT ALL PRIVILE ...

  10. IntelliJ IDEA 常用快捷键 之 Windows 版

    IntelliJ IDEA(简称 IDEA),是 Java 语言开发的集成环境,IDEA 在业界被公认为最好的 Java 开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE 支持.各类版本 ...