【问题标题】:How to render characters in a textfield correctly in a JSON template如何在 JSON 模板中正确呈现文本字段中的字符
【发布时间】:2016-05-26 11:03:23
【问题描述】:

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

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

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

这是我的 model.py 中的一个 sn-p:

@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')

这是我的场地.json 模板:

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

任何帮助表示赞赏?

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

【问题讨论】:

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


    【解决方案1】:

    我设法做到了...所以在进一步阅读之后,我认为使用模板并不是呈现 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 正确显示并带有适当的换行符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      相关资源
      最近更新 更多