Django 固定装置:通过 JSON 将 HTML 数据导入 TextField

Posted

技术标签:

【中文标题】Django 固定装置:通过 JSON 将 HTML 数据导入 TextField【英文标题】:Django fixtures: importing HTML data via JSON into a TextField 【发布时间】:2014-02-26 15:09:23 【问题描述】:

我正在将我的网站从另一个内容管理系统切换到 Django,但我无法使用固定装置将 html 导入 Django,特别是使用“事件”,它是我的 Django 应用程序中的一个模型。模型如下:

class Event(models.Model):
    event_name = models.CharField(max_length=100)
    event_date = models.DateTimeField()
    event_city = models.CharField(max_length=100)
    event_province = models.CharField(max_length=100)
    event_location = models.CharField(max_length=100, blank=True)
    event_details = models.TextField(blank=True)

event_details 是包含指定事件详细信息的 HTML。使用 syncdb 导入数据时,我收到 DeserializationError: Problem installed fixture 'events.json': Invalid control character at: line 274 column 73 (char 7090)

这是我尝试导入的 json 示例:


  "model": "events.Event",
  "pk": 26,
  "fields": 
  "event_name": "Random Event",
  "event_date": "2008-09-06 00:00:00+00:00",
  "event_city": "Toronto",
  "event_province": "ON",
  "additional_info":  "data": "Promoter: Random Person Productions<BR>
Contact: John Doe: (555) 555-7777<BR>
Promoter Website: <A HREF="http://www.foo.com">www.foo.com</A>" 
  
,

错误发生在“additional_info”第一行的第一个 BR 之后。我做错了什么?

问候。

【问题讨论】:

请注意,django 不是一个内容管理系统(你有 django-cms) 【参考方案1】:

可能有两件事:

    &lt;A&gt; 标记中的那些双引号。双引号是 JSON 中的字符串分隔符,所以当它们包含在 JSON 字符串 they should be escaped with a backslash 中时,像这样:

     "data": "Promoter: Random Person Productions<BR>
    Contact: John Doe: (555) 555-7777<BR>
    Promoter Website: <A HREF=\"http://www.foo.com\">www.foo.com</A>" 
    

    HTML 中的换行符。 JSON strings also can’t contain newline characters,所以如果它们实际上在你的 JSON 中(而不是你在 Stack Overflow 上输入代码时为了可读性而放入的东西)并且你希望它们留在那里,你也需要转义它们:

     "data": "Promoter: Random Person Productions<BR>\\nContact: John Doe: (555) 555-7777<BR>\\nPromoter Website: <A HREF=\"http://www.foo.com\">www.foo.com</A>" 
    

【讨论】:

非常感谢。我都做了,错误消失了。 @user2368439:不客气!很高兴为您提供帮助。

以上是关于Django 固定装置:通过 JSON 将 HTML 数据导入 TextField的主要内容,如果未能解决你的问题,请参考以下文章

在 django 单元测试中加载固定装置

不使用固定装置的 Django 1.10 种子数据库

Django:在不指定主键的情况下创建固定装置?

清空桌子并装满固定装置

json 曼彻斯特U固定装置

我可以将参数传递给 pytest 固定装置吗?