我正在尝试使用“特定于应用程序”的方法来组织各种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" %}
,但是如果执行上述操作,则看不到如何以逻辑方式进行此操作。
答案 0 :(得分:3)
首先,您希望每个应用程序模板都使用“ templates / appXXX /”(至少要使用“ appXXX / template.html”)。
第二点:正如您刚刚发现的那样,并非所有模板(也不是FWIW的所有代码)都与一个给定的应用严格相关。有时,您需要将应用程序集成在一起以构建完整的网站/ webapp,并且模板(尤其是基本模板)是项目“集成”层的一部分。 IOW:只需在项目的根目录中创建一个templates
目录,然后将基本模板放在此处。那就是每个人都期望的...
答案 1 :(得分:1)
这类问题有时以主要观点为基础而封闭;无论如何,我会给我两美分,因为我认为这是一个有效的问题。
我使用的结构如下(在某些项目中每个应用程序少于10个的Django项目中成功使用):
在第一张图片中,您可以看到,对于该项目,我以前缀MissingDefaultResource
开头的每个应用程序名称,但这只是一个内部约定。注意:文件夹app_
包含Python虚拟环境,并且该文件夹不受版本控制(其他文件夹是.venv
存储库的一部分)。
在第二张图片中,您可以看到我有一个文件夹git
,其中包含设置,基本URL,中间件,路由器和其他内容。注意:Django文档通常将此文件夹命名为与项目相同的文件夹(在本例中为project_config
,但我发现名称tb_system_01
对我的用例更有意义)。
然后,我通常使用文件夹project_config
和project_config/static
来存储应用程序通用的所有内容。这里还有我的基本模板,这是我对您所提出的特定问题的回答。 Django文档有时建议使用名为project_config/templates
的顶级文件夹,但是在我的用例中,我发现它更有条理,可以将该文件夹包含在templates
内。