Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django中静态/模板文件的存储位置,请参见;两勺Django“;_Django_Django Templates_Django Staticfiles - Fatal编程技术网

Django中静态/模板文件的存储位置,请参见;两勺Django“;

Django中静态/模板文件的存储位置,请参见;两勺Django“;,django,django-templates,django-staticfiles,Django,Django Templates,Django Staticfiles,我是一名读者,也是这本畅销书的忠实粉丝。 这本书充满了伟大的思想,但有一个我并不清楚 作者建议在Django项目根目录中创建一个静态和模板文件夹。 该template文件夹用于“站点范围的模板”(见第24页)。 此外,在pag.162,他们说“模板通常应该放在Django项目的根文件夹中……唯一的例外是当你将一个应用捆绑到第三方软件包中时” 他们在第12章中没有明确提到,但我想最好在模板根目录中为每个应用程序(与应用程序同名)创建一个文件夹。 让我们假设在我的icecreamratingsDja

我是一名读者,也是这本畅销书的忠实粉丝。 这本书充满了伟大的思想,但有一个我并不清楚

作者建议在Django项目根目录中创建一个
静态
模板
文件夹。
template
文件夹用于“站点范围的模板”(见第24页)。 此外,在pag.162,他们说“模板通常应该放在Django项目的根文件夹中……唯一的例外是当你将一个应用捆绑到第三方软件包中时”

他们在第12章中没有明确提到,但我想最好在
模板
根目录中为每个应用程序(与应用程序同名)创建一个文件夹。
让我们假设在我的
icecreamratings
Django项目中,我有两个应用程序:

  • flavors
    带有两个模板:new_flavor.html和details.html
  • 配置文件
    带有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
我没弄错吧

另一方面,建议在每个应用程序中创建一个
static
文件夹,并在其中创建一个与应用程序同名的子文件夹,如:
my_app/static/my_app/myimage.jpg

因此,我们有两种不同的策略:一个独特的
模板
文件夹和许多
静态
文件夹(每个应用程序中一个)。 有两种不同的策略显然是一个糟糕的选择

那么,您认为在每个应用程序中存储一个
模板
静态
文件夹怎么样? 大概是这样的:

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

django官方文档不建议您在每个应用程序中创建静态文件夹。相反,它更喜欢将静态目录存储在项目目录下

现在,我们可能可以不使用静态文件 直接在我的应用程序/静态/(而不是创建另一个我的应用程序) 子目录),但这实际上是个坏主意。Django将使用 它找到的第一个名称匹配的静态文件,以及 在另一个应用程序Django中使用相同名称的静态文件 将无法区分它们。我们需要能够 将Django指向正确的一个,确保这一点的最简单方法是 通过命名它们也就是说,将这些静态文件放入 另一个为应用程序本身命名的目录。

官方文件也回答了你关于模板结构的问题

从文件系统上的Django应用程序加载模板适用于中的每个应用程序 如果已安装应用程序,加载程序将查找模板子目录。 目录存在,Django在其中查找模板

这意味着您可以将模板与您的单个应用程序一起存储。这 还可以使用默认模板轻松分发Django应用程序

两勺Django是一本很棒的书。但是你应该先看官方文件