什么应该是存储TextField的抓取数据的正确方法

时间:2016-02-20 18:58:00

标签: django templates web-scraping scrapy

我想从网站上废弃数据,例如 SO

例如,在 SO 上我们在文本编辑器中写入,但在后端上,它存储在文本字段使用正确的 HTML 标记,并在需要时呈现。我面临类似的情况,我必须废弃文本字段的数据,所以我的问题是如何在保存之前应用格式。

我正在考虑使用示例模板并使用模板引擎(如Mako)来填充上下文,然后最终保存它。这是正确的方法吗?也许有人可以分享他的经历。

1 个答案:

答案 0 :(得分:0)

如果您已经使用django,为什么不使用框架模板?

假设您的模板目录中有text_field_template.html,您可以使用模型保存方法中的内容进行渲染:

from django.template.loader import render_to_string

class MyModel(models.Model):

   the_text_field = models.TextField...

   def save(self,context):
      self.the_text_field = render_to_string(text_field_template.html,context)
      super(MyModel,self).save()

您当然可以添加模板arg,因此save(context,template)

最好在"保存"中呈现模板。方法,因为典型的DB活动具有比读取更少的写入。如果您保存此字段一次,然后读取10次或100次,则保存时渲染是有意义的。

您可能有不同的用例:

  1. 如果上下文基于当前和更改的数据(仅当用户读取字段时才可用),则必须在提取记录时进行渲染。

  2. 使用该字段一次的应用程序,一次保存 - 一次读取 - 一次删除。如果你在保存或阅读上渲染它并不重要。

  3. 请注意,从安全的角度来看,您必须先将所有内容转义到数据库之前。