2017-10-17 94 views
0

我有一个在Python3上运行的Django应用程序,它有一个基本的博客应用程序设置。在我的Post模型中,我为以下内容设置了特定帖子的内容。使用Django REST框架显示富文本上传字段

from ckeditor_uploader.fields import RichTextUploadingField 

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

我也有REST框架Django的设置,这样,当我做了GET请求/api/posts/slug=abc-123运行此:

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

(忽略JSON有换行符,这是为了便于阅读,假设它是一个格式正确的JSON文件)

正如你所看到的content的结果有像\r\n这样的字符。这在Django中使用这个{{content | safe}}呈现,在Django呈现页面时工作正常,但我想在不使用Django作为后端的Web应用中显示此数据。长话短说,我需要一个javascript(或打字稿)库,它将以与Django使用其内置的safe筛选器相同的方式呈现content的值。 注意它必须是一个独立于Django的库,只能在客户端使用。

或者,我需要一种方法来存储仍然允许在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__'