Django覆盖模板静态文件位置

时间:2014-04-22 07:01:00

标签: python django django-templates django-staticfiles

如果我覆盖已安装应用的模板,我将.html文件放在/templates/appname/中。我想知道哪些正确的位置存储静态文件为那些被覆盖的模板将是?

我会将它们放入/common_static/appname吗?否则,有更好的位置或方法可以一起覆盖模板吗?

实施例。 app被命名为通知:

├── common_static
│   ├── notifications
│       ├── css
│           ├── styles.css
│       ├── js
│           ├── anim.js


├── templates
│   ├── base.html
│   ├── notifications
│       ├── file1.html
│       ├── file2.html

2 个答案:

答案 0 :(得分:0)

您可以将它们存储在任何您想要的位置。没有“适当的位置”,但您必须:

确保Django将包含静态模板文件的目录识别为模板目录

来自Django Docs:

  

Django在很多地方搜索模板目录,   取决于您的模板加载程序设置(请参阅下面的“加载程序类型”),   但是指定模板目录的最基本方法是使用   TEMPLATE_DIRS设置。

要添加/更改模板目录,请使用设置文件中的TEMPLATE_DIRS元组。例如:

TEMPLATE_DIRS = (
"/home/html/templates/template.html",
"/home/html/templates/default",
)

答案 1 :(得分:0)

有多种方法可以在Django中存储模板和静态。 以下是两个可以使用的架构:

<强> 甲。你上面提到的那个:

  

/ templates - 使用文件夹app_name存储项目的所有模板   存储应用特定模板

     

/ static - 存储所有静态   使用文件夹app_name进行项目以存储应用程序特定模板

  • 从某种意义上讲,这是完全可用的,您将知道项目的模板和静态文件的所有

  • 更易于管理并且名称冲突的机会

<强> B中。在特定应用中存储模板和静态:

  

templates - 仅存储项目级别模板,例如base.html文件,   404.html等

     

app_name&gt; / templates - 存储与该特定应用程序相关的所有模板。

     

static - 仅存储项目级静态,例如favicon.ico等

     

app_name / static - 存储与该特定应用程序相关的所有静态。

  • 如果您想要构建独立应用,这是完全可用的 独立使用。

  • 但在这种情况下,有更多的名称冲突机会,所以你 必须遵循一些命名约定,例如前缀'app_name_' 在模板名称或其他名称之前。

此外,您必须将这些模板和静态路径添加到Django中的TEMPLATE_DIRS和STATICFILES_DIRS设置,例如

TEMPLATE_DIRS = (<app_name>/templates,)
STATICFILES_DIRS = (<app_name>/static,)

您必须运行 ./ manage.py collectstatic ,以便您的静态工作在生产模式下工作(即DEBUG = False)