使用Django站点设置站点特定的静态文件夹



我正在使用Django站点。我希望能够拥有特定站点的模板和静态文件。

我目前的目录结构是:

├── site_a
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── views.py
│   └── wsgi.py
├── site_b
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── views.py
│   └── wsgi.py
└── templates
├── site_a
│   ├── _navbar.html
│   ├── home.html
│   └── signup.html
└── site_b
├── _navbar.html
├── home.html
└── signup.html

我知道,如果我在INSTALLED_APPS中将site_x目录声明为应用程序,我可以在其中移动模板。有没有其他方法可以告诉Django在site_a/templates中使用模板,而不将site_a声明为应用程序?

此外,我还想有站点特定的静态文件,这些文件没有放在项目static_ROOT中,这样我的树实际上看起来像:

.
├── site_a
│   ├── __init__.py
│   ├── settings.py
│   ├── static
│   │   ├── css
│   │   └── js
│   ├── templates
│   │   ├── _navbar.html
│   │   └── home.html
│   ├── urls.py
│   ├── views.py
│   └── wsgi.py
└── site_b
├── __init__.py
├── settings.py
├── static
│   ├── css
│   └── js
├── templates
│   ├── _navbar.html
│   └── home.html
├── urls.py
├── views.py
└── wsgi.py

您可以通过STATICFILES_DIRS(Django Docs(设置静态文件,而无需声明site_a:

STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
('site_a', os.path.join(BASE_DIR, 'site_a/static')),
'Full path to your file or directory'
)

在模板中:

<script src="{% static 'site_a/js/my_site_a.js' %}" type="text/javascript"></script>

并声明您的应用程序:

将静态文件(Django Docs(存储在应用程序中名为static的文件夹中:site_a/static/site_a/example.jpg

对于相同的模板:site_a/templates/site_a/example.html

在您的设置中。py设置APP_DIRS:

TEMPLATES = [
{
...,
'APP_DIRS': True,
...
},
]

请参阅支持模板引擎和覆盖模板:

APP_DIRS告诉引擎是否应该在已安装的应用程序中查找模板。每个后端为定义一个常规名称应用程序中模板所在的子目录存储。

最新更新