【问题标题】:Building JSON object that can hold contents of file构建可以保存文件内容的 JSON 对象
【发布时间】:2017-01-28 20:46:48
【问题描述】:

我必须将 python 文件的内容保存到我的数据库中。我正在编写固定装置,以便可以将其从 Django 项目加载到我的数据库中。

我不知道从哪里开始。大小是我需要为我的 JSON 对象解决的问题。

编辑:我的应用程序具有上传选项,用户可以在其中上传他们的 python 文件,该文件执行一些操作并给出一些结果。如果用户对我的应用程序的性能感到满意,他可以存储他的脚本(python 文件)并可以随时运行。

到目前为止,我使用静态文件位置来存储 python 文件。每当文件上传到系统时,我都不想更新我的 SCM,而是将它存储在我的数据库中,假设我将拥有无限的存储空间。

【问题讨论】:

  • 您是否阅读过有关创建和使用夹具的 Django 文档?
  • 是的,我做到了。我之前已经编写了固定装置,但是对于这个特定的固定装置,我需要在其中包含文件内容,我不知道如何将其添加到我的 JSON 中。也不确定我将如何解决我的 python 文件中的条件。
  • 您要存储什么样的文件?您需要提供更多关于您正在尝试做什么的信息,否则这个问题将因为过于模糊而被关闭。

标签: python json django database


【解决方案1】:

您不应该手动创建固定装置。您应该使用数据填充测试数据库,然后使用manage.py dumpdata 将其导出。

Django FileFieldImageField 都存储了指向 staticfiles 位置的路径,它们不直接存储文件的内容。

如果您尝试存储文本文件的内容,可以将其保存在 TextField 中。要在 JSON 中表示这一点,很可能需要将其编码为 UTF8 以处理特殊字符(漂亮的引号、重音符号等)并进行转义,以便将行尾转换为 \n 等。

【讨论】:

  • 到目前为止我一直在做同样的事情,但我不想有一个文件路径来存储这些文件,因为每次将文件上传到我的应用程序时,我都不想在我的 SCM。
  • 您的静态文件不应受版本控制。通常,静态文件存储在完全不同的位置,例如 S3 或 Akamai 等 CDN。关键是,fixture 存储的是指向该静态位置的文件路径,而不是文件本身。
猜你喜欢
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 2022-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 1970-01-01
相关资源
最近更新 更多