我是一位读者,也是热门书籍Two Scoops of Django的忠实粉丝。 这本书充满了很棒的想法,但有一个对我来说并不清楚。
作者建议在Django项目根目录中创建static
和templates
文件夹。
该template
文件夹适用于"网站范围的模板" (见第24页)。
另外在第162页,他们说"模板通常应该进入Django项目的根文件夹...唯一的例外是当你将应用程序捆绑到第三方软件包时#34;。
他们在第12章中没有明确提到它,但我想在templates
根目录中为每个应用程序(与应用程序同名)创建一个文件夹是很好的。
让我们假设在我的icecreamratings
Django项目中我有2个应用程序:
flavors
包含2个模板:new_flavor.html和details.html profiles
,包含1个模板:details.html
所有模板都继承自base.html
。我猜他们会建议以下结构:
icecreamratings_project/
|-- ...
|-- icecreamratings/ # Django project root
|-- ...
|-- static/
|-- templates/
|-- 404.html
|-- 500.html
|-- base.html
|-- flavors/ # same name as app flavor
| |-- new_flavor.html
| |-- details.html
|-- profiles/ # same name as app profiles
|-- details.html
我说得对吗?
另一方面,Django official docs建议在每个应用中创建一个static
文件夹,并在其中创建一个与应用名称相同的子文件夹,例如:my_app/static/my_app/myimage.jpg
。
所以我们有两种不同的策略:一个独特的template
文件夹和许多static
个文件夹(每个应用程序中有一个)。
有两种不同的策略显然是一个糟糕的选择。
那么,您如何看待在每个应用中存储template
和static
文件夹?
像这样:
icecreamratings_project/
|-- ...
|-- icecreamratings/ # Django project root
|-- ...
|-- static/ # site-wide static files
| |-- bootstrap/ # bootstrap source files
| |-- jquery/ # jquery source files
| |-- css/ # css files used by base.html (and others in templates root)
| |-- js/ # javascript files used base.html (and others in templates root)
| |-- img/ # img files files used base.html (and others in templates root)
|-- templates/ # site-wide templates
| |-- 404.html
| |-- 500.html
| |-- base.html
|-- flavors/ # an app
|-- static/
| |-- flavors/ # static files specific for this app
| |-- css/ # css files for flavor app templates
| |-- js/ # javascript files for flavor app templates
| |-- img/ # img files for flavor app templates
|-- templates/ # template files specific for this app
|-- new_flavor.html
|-- details.html
答案 0 :(得分:1)
django官方文档不建议您在每个应用中创建静态文件夹。相反,它更喜欢将静态目录存储在项目目录下。
现在我们可以放弃我们的静态文件 直接在my_app / static /中(而不是创建另一个my_app 子目录),但实际上这是一个坏主意。 Django将使用 找到名字匹配的第一个静态文件,如果有的话 Django在不同的应用程序中具有相同名称的静态文件 将无法区分它们。我们需要能够 将Django指向正确的位置,这是确保实现这一目标的最简单方法 通过命名它们。 即将这些静态文件放入其中 另一个为应用程序本身命名的目录。
官方文档也回答了关于模板结构的问题。
从文件系统上的Django应用程序加载模板。 对于每个应用程序 INSTALLED_APPS,加载器查找模板子目录。 If 该目录存在,Django在那里寻找模板。
这意味着您可以使用各个应用程序存储模板。这个 还可以使用默认模板轻松分发Django应用程序。
Django的两个独家新闻是一本好书。但是你应该先阅读官方文件。