在Django项目中组织模板

时间:2018-10-10 15:16:20

标签: python django django-templates

我正在尝试使用“特定于应用程序”的方法来组织各种Django应用程序。例如:

- app2
    - __init__.py
    - urls.py
    - views.py
    - templates/
- app2
    - __init__.py
    - urls.py
    - views.py
    - templates/
- manage.py
- settings.py
- urls.py

我遇到的一个问题是将一切继承的基础模板放在哪里?例如,在所有模板的顶部,我都有{% includes "base.html" %},但是如果执行上述操作,则看不到如何以逻辑方式进行此操作。

2 个答案:

答案 0 :(得分:3)

首先,您希望每个应用程序模板都使用“ templates / appXXX /”(至少要使用“ appXXX / template.html”)。

第二点:正如您刚刚发现的那样,并非所有模板(也不是FWIW的所有代码)都与一个给定的应用严格相关。有时,您需要将应用程序集成在一起以构建完整的网站/ webapp,并且模板(尤其是基本模板)是项目“集成”层的一部分。 IOW:只需在项目的根目录中创建一个templates目录,然后将基本模板放在此处。那就是每个人都期望的...

答案 1 :(得分:1)

这类问题有时以主要观点为基础而封闭;无论如何,我会给我两美分,因为我认为这是一个有效的问题。

我使用的结构如下(在某些项目中每个应用程序少于10个的Django项目中成功使用):

在第一张图片中,您可以看到,对于该项目,我以前缀MissingDefaultResource开头的每个应用程序名称,但这只是一个内部约定。注意:文件夹app_包含Python虚拟环境,并且该文件夹不受版本控制(其他文件夹是.venv存储库的一部分)。

enter image description here

在第二张图片中,您可以看到我有一个文件夹git,其中包含设置,基本URL,中间件,路由器和其他内容。注意:Django文档通常将此文件夹命名为与项目相同的文件夹(在本例中为project_config,但我发现名称tb_system_01对我的用例更有意义)。

然后,我通常使用文件夹project_configproject_config/static来存储应用程序通用的所有内容。这里还有我的基本模板,这是我对您所提出的特定问题的回答。 Django文档有时建议使用名为project_config/templates的顶级文件夹,但是在我的用例中,我发现它更有条理,可以将该文件夹包含在templates内。

enter image description here