Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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 runserver配置为在非应用程序目录中提供静态文件?_Django - Fatal编程技术网

将Django runserver配置为在非应用程序目录中提供静态文件?

将Django runserver配置为在非应用程序目录中提供静态文件?,django,Django,我试图将Django配置为在使用runserver时提供静态文件(生产工作正常)。对于apps目录下的所有静态文件,一切都正常工作。问题在于静态文件不在特定应用程序下,但位于最终静态目录中。例如,我有以下项目结构: /myproject/ /myproject/static/ /myproject/static/css/foo.css /myproject/app1 /myproject/app1/static/css/bar.css urls.py if settings.SERVE_STA

我试图将Django配置为在使用runserver时提供静态文件(生产工作正常)。对于apps目录下的所有静态文件,一切都正常工作。问题在于静态文件不在特定应用程序下,但位于最终静态目录中。例如,我有以下项目结构:

/myproject/
/myproject/static/
/myproject/static/css/foo.css
/myproject/app1
/myproject/app1/static/css/bar.css

urls.py
if settings.SERVE_STATIC:
    urlpatterns += patterns('',
        url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
            {'document_root': settings.STATIC_ROOT}),
    )
    urlpatterns += staticfiles_urlpatterns() # one of these may be redundant.

settings.py
SERVE_STATIC = True
PROJECT_ROOT = '/myproject'
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(PROJECT_ROOT, 'static'),)
INSTALLED_APPS = ('app1',)
/myproject/
/myproject/静态/
/myproject/static/css/foo.css
/myproject/app1
/myproject/app1/static/css/bar.css
url.py
如果settings.service\u STATIC:
urlpatterns+=模式(“”,
url(r'^static/(?P.*)$,'django.views.static.service',
{'document_root':settings.STATIC_root}),
)
urlpatterns+=静态文件_urlpatterns()#其中一个可能是冗余的。
设置.py
SERVICE_STATIC=True
项目根=“/myproject”
STATIC\u ROOT=os.path.join(PROJECT\u ROOT,“STATIC”)
静态URL='/STATIC/'
STATICFILES_DIRS=(os.path.join(项目根目录,'static'),)
已安装的应用程序=('app1',)
通过这些设置,我得到了错误:

配置不当:STATICFILES\u DIRS设置不应包含 静态根设置

这是有道理的。我告诉Django收集静态文件,并将它们放在同一个位置-这可能会导致循环

如果我注释掉STATICFILES\u DIRS变量,django将找到静态文件'bar.css'。但它找不到“foo.css”

如果我注释掉STATIC\u ROOT变量并放回STATICFILES\u DIRS,那么它会找到文件“foo.css”-当然,“collectstatic”命令将不再工作

注意-我知道“/static”目录应该是空的,但我所在的项目中仍然有文件。:)只要它们没有被“collectstatic”覆盖,Django runserver就应该为它们提供服务,但事实并非如此


在运行Django runserver时,如何在static_ROOT(如foo.css)下提供静态文件?

将/static/中的文件立即移动到另一个目录中,例如称之为/project static/

然后仅在URL.py中包含此行:

urlpatterns += staticfiles_urlpatterns()
(删除django.views.static.service视图)

在settings.py中,使用以下命令:

STATICFILES_DIRS = (os.path.join(PROJECT_ROOT, 'project-static'),)

然后,您可以将文件放在文件系统的/project static/目录中,开发服务器将使用/static/URL前缀为它们提供服务,在生产环境中,
collectstatic
将找到它们并将它们放入/static/目录中,web服务器可以在其中找到它们。

如果您在developement下运行服务器,您需要将
STATIC\u ROOT
更改为类似
STATIC\u-fake
的假目录
STATICFILES\u DIRS
必须是包含静态文件的真实目录。哇,我忘了我已经问过这个问题了。:)看起来很合理,虽然还没试过。基本上你是说
/static/
应该总是空的,它只是静态的目的地?