使用Django-REST框架显示富文本上传字段

2024-04-26 11:28:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个运行在Python3上的Django应用程序,它设置了一个基本的博客应用程序。在我的Post模型中,我为特定帖子的内容设置了以下内容。在

from ckeditor_uploader.fields import RichTextUploadingField 

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

我还为Django设置了REST框架,这样当我对GET请求/api/posts/slug=abc-123时,它会运行以下内容:

^{pr2}$

会返回这样的信息:

{
    "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和{}的字符。在Django中使用这个{{content | safe}}呈现,当Django呈现页面时,它可以正常工作,但是我想在一个不使用Django作为后端的web应用程序中显示这个数据。在

长话短说,我需要一个javascript(或typescript)库来呈现content的值,就像Django使用其内置的safe过滤器一样。注意它必须是一个独立于Django的库,只能在客户端使用。在

或者,我需要一种方法来存储内容,它仍然允许Django中RichTextUploadingField的所有功能,并且不影响Django的呈现,但是允许我以某种方式呈现HTML中的内容。在


Tags: ofdjango模型json应用程序内容contentpost
1条回答
网友
1楼 · 发布于 2024-04-26 11:28:38

未经测试的代码,您可以尝试:

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__'

相关问题 更多 >