Django模板中动态文本的静态文本

时间:2010-11-01 11:04:31

标签: django django-templates

干杯!我对Django很新,但我现在已经挖了几个星期了。我正在建立一个围绕Django的基本网站,我对框架本身及其可能性感到非常兴奋。我的问题可能听起来像“noob”,如果确实如此,请不要抱怨。

我已经开发了新闻提要,页面,评论,分类和其他一些现在可以使用的东西了,但是当我到达我必须将模板应用到我的网站时,我突然想到我错过了一些东西 - 静态文本。

您知道所有网站都有一些静态文本,如版权声明,一些标语文本,主页上的介绍性文字,侧边栏中的一些文字和/或图像,这些都是静态的。我知道所有这些都可以分解成模型,但我不喜欢在我的网站上的每一点文字/原始HTML数据上这样做的开销。

我在考虑使用包含html块名称及其内容的单个模型,然后选择适用于某个视图的模型并将内容传递给模板。所以我的问题是 - 这是正确的做法吗?我会将版权声明存储在我的网站底部的数据库中吗?我可以使用单个字典来存储所有可用于我的模板中的文本块,但是如果它们的数量变得非常大呢?我是否必须在我的每一个视图中只查询我需要的?或者我应该引入一个特殊的模板标签来为我开展这类工作吗?

只是为了给你一个想法,以下是我想到的两个选项:

# Option 1
{% load text %}
{% text some-text-label %}

# Option 2 (assuming text was passed in the Context)
{{ text.some-text-label %}

你究竟是如何解决这类问题的?

问题?是的 - 你可以告诉我,我可以在我的模板中硬编码我的版权声明,这很好,但客户,客户,客户。他们不知道HTML,他们真的想从管理面板内部编辑网站的任何部分(就内容而言)。所以是的,希望能解释它;)

感谢您的回答!

3 个答案:

答案 0 :(得分:3)

您可能希望查看执行此类操作的各种第三方应用之一 - django-flatblocksdjango-chunksgeneric-flatblocks

答案 1 :(得分:1)

如果我的要求正确无误,您可以按照以下说明进行操作:

  1. 首先,您必须创建base.html(或其他名称)并创建不同的块。
  2. 您可以创建模板标签并将您的逻辑用于从数据库中获取数据(即版权信息和您想要的任何内容)
  3. 您可以将模板标记加载到相应的块以动态获取数据。
  4. 使用此模板作为基本模板,并在所有其他模板中继承它。
  5. 希望它有所帮助。

答案 2 :(得分:1)

我一直在使用django-flatblocks(http://github.com/zerok/django-flatblocks)来处理这类信息,并通过管理员对其进行管理。