restframework框架写api中的小我私家理解以及碰到的问题

时间:2021-07-16 03:31:47

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"}