7

这是新的项目结构(来自 Django 1.4 发行说明)。

我的项目
|-- 管理.py
|-- 我的项目
| |-- __init__.py
| |-- 设置.py
| |-- urls.py
| `--wsgi.py
`-- 民意调查
    |-- __init__.py
    |-- 模型.py
    |-- 测试.py
    `--views.py

我不确定是否应该将 STATIC_ROOT 指向

myproject/myproject/static/(连同settings.py、urls.py...)

或者

顶级目录myproject/static(myproject、myapp1、myapp2 旁边)?

4

3 回答 3

7

STATIC_ROOT与 Python 导入无关,所以它完全取决于你。通常,myproject/static/,因此os.path.join(PROJECT_ROOT, 'static/')在设置中,更容易。

按照 San4ez 的建议进行更新,并在 settings.py 中添加注释

# Absolute path to the directory static files should be collected to.  
# Don't put anything in this directory yourself; store your static files  
# in apps' "static/" subdirectories and in STATICFILES_DIRS.  
# Example: "/home/media/media.lawrence.com/static/"  

根据您的结构,最好将poll应用程序的静态文件放入.poll/static/

于 2012-04-16T05:44:04.313 回答
2

我同意@okm,这myproject/static/是一个静态的好地方,但你也可以在你的应用程序中存储图像、css 和 js myproject/polls/media。比你必须配置django.contrib.staticfiles应用程序并使用命令将静态复制media到 STATIC_ROOT

python manage.py collectstatic

这种方法的优点是允许您使用静态传播您的应用程序,并且您的应用程序可以在其他项目中自由使用

于 2012-04-16T06:04:39.207 回答
1

STATIC_ROOT只是staticfilescontrib 应用程序将收集和存放所有静态文件的文件路径。这是一个收集物品的地方,仅此而已。关键是这个位置是临时存储,主要用于打包你的应用程序以进行部署。

staticfiles应用程序搜索要从任何static应用程序中列出的任何目录中收集的项目,INSTALLED_APPS以及STATICFILES_DIRS.

对于我的项目,我创建了一个deploy目录,在该目录中创建了一个www用于存放静态文件的文件夹,以及仅在部署时使用的各种其他文件。该目录位于项目的顶层。

您可以将变量指向您的用户具有写入权限的任何位置,它不需要位于项目目录中。

于 2012-04-16T06:17:38.067 回答