【问题标题】:How to structure template libraries in a Django project? [closed]如何在 Django 项目中构建模板库? [关闭]
【发布时间】:2020-05-01 12:31:21
【问题描述】:

我正处于开发过程的早期阶段,正在尝试找出构建网站模板库的最佳实践。

我计划有一个“基础”模板来扩展整个网站。我已经看到了一些示例,其中在项目级别创建了模板目录以容纳此文件,以及在其中一个应用程序文件夹中创建“基本”文件然后根据需要扩展到其他应用程序的其他示例。这应该有正确的方法吗?

在此先感谢您在这个极其基本的问题上取笑我。第一次试图让我的脚在我身下。

【问题讨论】:

  • 你可以使用其中的任何一个。这真的取决于你的要求。如果您有多个遵循相同 html 结构的应用程序,则可以在项目级别使用模板。然而,就个人而言,我们模块化任何东西的原因是为了获得一定的灵活性。我建议您为每个应用程序而不是项目都有基本文件。
  • 感谢您的帮助。在项目级别和单个应用程序级别都拥有基本文件会不会过大? (即,应用级别的基础文件将从项目级别扩展,然后特定的应用 html 文件将从相应应用的基础文件扩展)
  • 这是一个基于意见的问题吗?

标签: python django templates


【解决方案1】:

我在 Django 上工作了一年。我认为将模板放在单独的文件夹中的最佳方式。这意味着在每个应用程序文件夹中都有一个模板。有一个模板文件夹会很好,在这个文件夹中,我们可以有我们的应用程序。您必须在设置文件中定义模板文件夹。 Plase check my folder structure

【讨论】:

    【解决方案2】:

    对于站点项目,我倾向于将项目模块本身(由startproject 创建)也作为应用程序。

    这样,基本模板、基本模型(例如自定义用户模型!)、辅助实用程序函数等就存在于其中,并且根本不需要使用文件系统模板加载器 - 默认应用程序-based 模板加载器工作正常。

    也就是说,如果我的项目是 grocerystore 并且它有两个应用程序,drinksfoods(愚蠢的例子,但请耐心等待),结构将是大约

    manage.py
    grocerystore/
        __init__.py
        settings/
            __init__.py
        models/
            __init__.py
            user.py
        views/
            __init__.py
        templates/
            base.html
    foods/
        __init__.py
        apps.py
        models/
            __init__.py
            food.py
        views/
            __init__.py
            food/
                __init__.py
                food_list_view.py
            __init__.py
        templates/
            foods/
                food_list.html
    drinks/
        __init__.py
        apps.py
        models/
            __init__.py
            drink.py
        # ... etc ...
    

    并且INSTALLED_APPS 将包含(沿 Django 默认值)('grocerystore', 'foods', 'drinks')

    然后您可以在您的应用中简单地{% extends "base.html" %}

    (注意,顺便说一句,为了能够将 models.py 拆分为一个包,您必须确保 models/__init__.py 导入包含每个模型的模块,以便它们被 Django 注册!)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-10
      • 2015-05-19
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 2011-01-06
      • 2014-09-16
      相关资源
      最近更新 更多