2017-10-17 5 views
0

Python3で実行されているDjangoアプリケーションがあり、基本的なブログアプリケーションが設定されています。私のPostモデルでは、特定の投稿の内容について次のような設定をしています。Django RESTフレームワークを使用してリッチテキストアップロードフィールドを表示

class PostViewSet(viewsets.ViewSetMixin, generics.ListAPIView): 
    """ 
    API endpoint that allows posts to be viewed. 
    """ 
    serializer_class = PostSerializer 

    def get_queryset(self): 
     queryset = Post.objects.all() 
     # A bunch of Django filters 
     return queryset 

そして、このような何かを返すでしょう:

{ 
    "title" : "Abc 123", 
    "slug" : "abc-123, 
    "content" : "According to a survey, '93% of executives believe 
       that an employee’s style of dress at work 
       influences his/her chance at a promotion&#39;.</p>\r\n\r\n<p> 
       This is more content blah blah blah." 
} 
を私は /api/posts/slug=abc-123GET要求を行うときには、これを実行されるように私もDjangoのためのRESTフレームワークが設定した

from ckeditor_uploader.fields import RichTextUploadingField 

class Post(models.Model): 
    content = RichTextUploadingField() 

(JSONに改行があることを無視してください。これは読みやすいように、正しくフォーマットされたJSONファイルだとします)

結果としてcontentは、\rおよび\nのような文字を含んでいます。これは、Djangoがこのページをレンダリングするときにうまく動作するこの{{content | safe}}を使用してDjangoでレンダリングされますが、このデータをバックエンドとしてDjangoを使用しないWebアプリケーションに表示したいとします。

短く言えば、contentという値をレンダリングするjavascript(またはtypescript)ライブラリが、Djangoが組み込みのsafeフィルタを使用しているのと同じ方法でレンダリングする必要があります。 注:これは、クライアント側でのみ使用できるDjangoのライブラリに依存しないものでなければなりません。

または、私はまだジャンゴにRichTextUploadingFieldのすべての機能を可能にし、Djangoのレンダリングには影響を与えませんが、私はいくつかの方法または別にHTMLでコンテンツをレンダリングすることを可能にするコンテンツを格納するための方法が必要です。

答えて

0

コードをテストしていない、あなたは試してみることができます。

class PostSerializer(serializers.ModelSerializer): 
    content = serializers.SerializerMethodField() 

    def get_content(self, instance): 
     from django.utils.safestring import mark_safe 
     return mark_safe(instance.content) 

    class Meta: 
     model = Post 
     fields = '__all__' 
関連する問題