1. 程式人生 > >restframework框架寫api中的個人理解以及碰到的問題

restframework框架寫api中的個人理解以及碰到的問題

bject itl null 索引 路徑 guide class 不必要 related

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中的個人理解以及碰到的問題