如何在JSON模板中正确呈现文本字段中的字符

时间:2016-05-26 11:03:23

标签: python django-models django-templates django-views django-jsonfield

我创建了一个带有TextField模型的Django应用程序。当我使用管理界面时,我可以填充TextField,如下所示:

Admin interface with TextField

但是,当我使用模板在JSON中呈现它时,我在浏览器上获得以下内容。即它无法正确处理换行符:

Web browser with rendered JSON

我不确定如何正确处理这个问题,以便可以在管理界面中根据需要输入文本字段中的文本,然后将其正确呈现为JSON。

以下是我的model.py:

的摘录
@python_2_unicode_compatible
class Venue(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=50, blank=False, null=False)
    description = models.TextField(blank=False, null=False)
    def __str__(self):
        return self.name

这是views.py

中的函数
def venues(request):
    venues_list = Venue.objects.order_by('-name')
    context = {'venues_list':venues_list}
    return render(request, 'myapp/venues.json', context, content_type='application/json')

这是我的venue.json模板:

[
    {% for venue in venues_list %}
        {
            "venue_id":"{{venue.id}}",
            "name":"{{venue.name}}",
            "description":"{{venue.description}}"
        }
        {% if forloop.last %}{% else %}, {% endif %}
    {% endfor %}
]

有任何帮助表示赞赏吗?

P.S。不确定模板是否是一种好方法。但是我想控制在JSON数据中显示哪些字段,而不仅仅是JSON转储整个模型。

1 个答案:

答案 0 :(得分:0)

我设法做到了......所以经过进一步阅读后,我认为使用模板并不是渲染JSON数据的最佳方法。我发现我可以使用JsonResponse来正确处理JSON数据的显示。

所以在这里我删除了我的模板并在views.py中重新编写了我的函数,看起来像这样。

从django.http导入JsonResponse ...

def venues(request):
    venues_list = Venue.objects.order_by('-name')
    venue_array =[]

    for venue in venues_list:
        record = {"venue_id":venue.id, "name":venue.name, "description":venue.description}
            venue_array.append(record)

    return JsonResponse(venue_array, safe=False)

现在一切正常,因为我的JSON正确显示了适当的换行符。