我能';t使用Python定义STATICFILES\u DIRS以找出路径
我希望能够使用python来定义静态/媒体文件的设置,以获得路径,这样我就不需要在我的开发机器和服务器上进行不同的设置 所以我有这些设置我能';t使用Python定义STATICFILES\u DIRS以找出路径,python,django,Python,Django,我希望能够使用python来定义静态/媒体文件的设置,以获得路径,这样我就不需要在我的开发机器和服务器上进行不同的设置 所以我有这些设置 import os from unipath import Path ### PATH CONFIGURATION # Absolute filesystem path to the top-level project folder SITE_ROOT = Path(__file__).ancestor(3) ### MEDIA CONFIGURATION
import os
from unipath import Path
### PATH CONFIGURATION
# Absolute filesystem path to the top-level project folder
SITE_ROOT = Path(__file__).ancestor(3)
### MEDIA CONFIGURATION
MEDIA_ROOT = SITE_ROOT.child('media')
MEDIA_URL = '/media/'
### END MEDIA CONFIGURATION
### STATIC CONFIGURATION
STATIC_ROOT = SITE_ROOT.child('static')
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = os.path.join(SITE_ROOT, 'static'),
我的问题是,在本地它不会加载静态文件,并且终端说STATICFILES\u DIRS
不应该包含STATICFILES\u ROOT
可以让Python像这样加载路径吗?还是我在浪费时间?这样做:
import os
settings_dir = os.path.dirname(__file__)
PROJECT_ROOT = os.path.abspath(os.path.dirname(settings_dir))
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media/')
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static/')
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static/'),
)
这应该行得通。希望有帮助 您的代码本身没有问题,只是应用程序的目的是将文件从
STATICFILES\u DIRS
中指定的目录复制到STATIC\u ROOT
中指定的目录中,因此,在STATICFILES\u DIRS
设置中包含STATIC\u ROOT
目录没有多大意义
除非您实际将staticfiles
应用程序与/manage.py collectstatic
一起使用,否则您最好将staticfiles\u DIRS
设置保留为空,即只需更改
STATICFILES_DIRS = os.path.join(SITE_ROOT, 'static'),
…到
STATICFILES_DIRS = ()
+其他两个答案都是1。如果您厌倦了大量键入
os.path.bla
,这里有一个快捷方式,您可以将其放置在设置文件的顶部(或从其他任何地方导入)
非常聪明:也可以这样做:
rel=lambda x:os.path.join(os.path.abspath(os.path.dirname(_文件))x)
:)很好的提示!精彩的解释,谢谢。我已经使用Django一年多了&实际上没有使用静态应用程序!
def rel(*x):
return os.path.join(os.path.abspath(os.path.dirname(__file__)), *x)
STATICFILES_DIRS = (
rel('static'),
)