Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.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
Python Django 1.4中的静态文件夹结构?_Python_Django_Convention_Directory Structure_Django 1.4 - Fatal编程技术网

Python Django 1.4中的静态文件夹结构?

Python Django 1.4中的静态文件夹结构?,python,django,convention,directory-structure,django-1.4,Python,Django,Convention,Directory Structure,Django 1.4,这是新的项目结构(来自Django 1.4发行说明) 我的项目 |--manage.py |--我的项目 ||--uuu init_uuuuuuuuuuuuuuuuuy.py ||--settings.py ||--url.py |`--wsgi.py `--民意测验 |--_uuuinit_uuuuu.py |--models.py |--tests.py `--views.py 我不确定的是,我是否应该将STATIC_ROOT指向 myproject/myproject/static/(连同

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

我的项目 |--manage.py |--我的项目 ||--uuu init_uuuuuuuuuuuuuuuuuy.py ||--settings.py ||--url.py |`--wsgi.py `--民意测验 |--_uuuinit_uuuuu.py |--models.py |--tests.py `--views.py 我不确定的是,我是否应该将STATIC_ROOT指向

myproject/myproject/static/
(连同settings.py、url.py…)


顶层目录
myproject/static
(紧挨着myproject,myapp1,myapp2)

static\u ROOT
与Python导入无关,因此完全取决于您。通常,
myproject/static/
,因此设置中的
os.path.join(PROJECT\u 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/

我同意@okm的观点,即
myproject/static/
是静态的好地方,但您也可以在
myproject/polls/media
中存储应用程序中的图像、css和js。然后,您必须配置
django.contrib.staticfiles
app,并使用命令将static从
media
复制到static\u ROOT

python manage.py collectstatic

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

static\u ROOT
只是一个文件路径,
staticfiles
contrib应用程序将在其中收集和存放所有静态文件。这是一个收集物品的地方,仅此而已。关键是该位置是临时存储,主要用于打包应用程序进行部署

staticfiles
应用程序在
INSTALLED\u apps
中列出的任何应用程序中以及在
staticfiles\u DIRS
中列出的任何额外文件路径位置中搜索要从名为
static
的任何目录中收集的项目

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


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

我不知道“官方”这个词是什么,但我认为顶层目录更有意义。css、js和图像都应该是myproject/myproject/static以及myproject/poll/static中的子文件夹。使用名为
media
的文件夹是危险的,因为它与django中通常用于用户上载的图像和其他文件的文件夹名冲突。它也是管理员静态文件使用的文件夹(在collectstatic之后)。Collect static确实会将它们收集起来,供生产服务器使用,然后从中心文件夹(通常在myproject文件夹结构之外,如/var/www/www.mysite.com/static)为它们提供服务。
python manage.py collectstatic