django模板,字符串管理

时间:2017-02-27 07:09:43

标签: django django-templates

我有几个模板使用有限数量的字符串很多次,所以我想以某种方式重用字符串而不是模板中的硬编码。

我找到了两种方法,但是它们都有限制,所以我要求更好的方法来做这个或者可能是在Django模板中管理String的标准方法。

首先,简单地:将它们存储在数据库中,如果我在下面创建一个简单的模型并在视图中发送所有这些模型(大约500个对象),它适用于所有渲染模板。我还可以对它们进行分类,并在每个模板中发送相关的类别。

class Subject(models.Model):
    key = models.CharField()    
    trans = models.TextField()
    type = models.SmallIntegerField(choices=string.types)

优点:

  • 简单
  • 即使具有管理员权限的用户也可以管理它们,而且我无需更改简单文本
  • 可以存储翻译(将来,如果需要更多语言)

缺点:

  • 增加数据库访问权限
  • 担心未知的安全问题

第二:使用{% with x="done" %}标记我可以在基本模板中使用“with”标记,并将其扩展到其他模板中,这样我就可以使用标准django访问所有标记。< / p>

优点:

  • 简单
  • 无数据库访问
  • 可能安全

缺点:

    带有标签的
  • 需要在一行中输入所有条目然后才有用 最多10-20个条目,远离300-500条目
  • 以html管理
  • 硬编码

编辑:第三,使用Django translation

感谢@Danial Roseman的评论,我可以使用i18n。

优点:

  • 迄今为止最标准的方式

缺点:

  • 管理硬编码字符串很复杂:)
  • 开销(根据i18n文件)

1 个答案:

答案 0 :(得分:1)

您也可以将字符串存储在dict中(让我们称之为字符串&#39;),然后使用上下文处理器将其传递到上下文中,然后使用标准{{ strings.key }}符号。没有安全问题,不需要数据库,也不需要特殊管理,如果需要,您也可以将字符串标记为可翻译。