代码之家  ›  专栏  ›  技术社区  ›  kovshenin

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

  •  4
  • kovshenin  · 技术社区  · 14 年前

    我已经开发了一个新闻提要、页面、评论、分类法和一堆其他的东西,现在可以使用了,但是当我不得不将模板应用到我的网站时,我突然觉得我遗漏了一些东西——静态文本。

    你知道所有的网站都有一些静态文本,比如版权声明,一些标语文本,主页上的介绍性文本,侧栏中的一些文本和/或图像,这些都是静态的。我知道所有这些都可以分解为模型,但是我不喜欢在我的网站上对每一点文本/原始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 回复  |  直到 14 年前
        1
  •  3
  •   Daniel Roseman    14 年前

    你可能想看看做这种事情的第三方应用程序- django-flatblocks , django-chunks generic-flatblocks .

        2
  •  1
  •   Ankit Jaiswal    14 年前

    如果您的要求正确无误,您可以按照以下步骤操作:

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

    希望有帮助。

        3
  •  1
  •   mdorn    14 年前

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