dev*_*jim 54 python django django-static django-staticfiles
这三个静态URL有什么区别?
我不确定我是对的,我MEDIA_ROOT
用来存储我上传的照片(通过models.ImageField()
)
但是,我为我的管理员创建了一个JS脚本admin.py
.我将媒体定义如下:
....
class Media:
js = ('/admin/custom.js', )
Run Code Online (Sandbox Code Playgroud)
和我的settings.py
:
....
STATIC_ROOT = "/home/user/project/django1/top/listing/static"
Run Code Online (Sandbox Code Playgroud)
我添加了custom.js
到STATIC_ROOT/admin/custom.js
,但它不工作.投掷404未找到错误.
然后我改变STATIC_ROOT
对STATICFILES_DIRS
,和它的作品!
....
STATICFILES_DIRS = "/home/user/project/django1/top/listing/static"
Run Code Online (Sandbox Code Playgroud)
所以,我不明白这里发生了什么.事实上,我只是不明白STATIC_ROOT
和之间有什么区别STATICFILES_DIRS
.
目前我正在通过virtualenv在我的机器上测试Django,还没有部署,这是STATIC_ROOT
不工作的原因??
Max*_*ant 84
您可以在Django文档中找到这些设置.以下是我自己的文档定义和引文:
MEDIA_ROOT
是使用上传文件的文件夹FileField
.
用于保存用户上载文件的目录的绝对文件系统路径.
STATIC_ROOT
是使用后将存储静态文件的文件夹 manage.py collectstatic
collectstatic
将收集静态文件以进行部署的目录的绝对路径.如果
staticfiles
启用了contrib应用程序(默认),则collectstatic
管理命令将收集静态文件到此目录中.有关使用的更多详细信息,请参阅有关管理静态文件的方法.
STATICFILES_DIRS
是Django将搜索除static
安装的每个应用程序的文件夹之外的其他静态文件的文件夹列表.
此设置定义的其他位置,如果该staticfiles应用程序会遍历
FileSystemFinder
如果使用启用取景器,如collectstatic
或findstatic
管理命令或使用静态文件服务视图.
在您的设置中,您应该:
MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
# Make a tuple of strings instead of a string
STATICFILES_DIRS = ("/home/user/project/django1/top/listing/static", )
Run Code Online (Sandbox Code Playgroud)
...哪里:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
Run Code Online (Sandbox Code Playgroud)
settings.py
现在在默认的Django中定义.
Max*_*ysh 83
STATIC_ROOT
在开发过程中没用,它只需要部署.
在开发过程中,STATIC_ROOT
什么都不做.你甚至不需要设置它.Django在每个应用程序的目录(myProject/appName/static
)中查找静态文件并自动提供它们.
这是什么manage.py runserver
时候完成的魔术DEBUG=True
.
当您的项目上线时,情况就不同了.很可能你会使用Django提供动态内容,静态文件将由Nginx提供.为什么?因为Nginx非常高效,可以减少Django的工作量.
这就是STATIC_ROOT
方便的地方,因为Nginx对你的django项目一无所知,也不知道在哪里可以找到静态文件.
所以你设置STATIC_ROOT = '/some/folder/'
并告诉Nginx寻找静态文件/some/folder/
.然后你运行manage.py collectstatic
,Django将从你拥有的所有应用程序中复制静态文件/some/folder/
.
STATICFILES_DIRS
用于包含要查找的其他目录collectstatic
.例如,默认情况下,Django无法识别/myProject/static/
.所以你可以自己包括它.
STATIC_URL = '/static/'
if not DEBUG:
STATIC_ROOT = '/home/django/www-data/site.com/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static/'),
]
Run Code Online (Sandbox Code Playgroud)
Pra*_*aur 19
STATICFILES_DIRS
和之间的区别STATIC_ROOT
该STATICFILES_DIRS
可以包含其他目录(不一定是应用程式目录)与静态文件和这些静态文件,当您运行将被收集到您的STATIC_ROOT collectstatic
.然后,这些静态文件将由您的Web服务器提供,它们将从您的STATIC_ROOT提供.
如果您希望提供STATIC_ROOT中的文件,那么您需要将这些文件移动到另一个目录并将其他目录放入其中STATICFILES_DIRS
.您的STATIC_ROOT
目录应为空,并且应将所有静态文件收集到该目录中.
MEDIA_ROOT
媒体文件,所有上传的文件.示例:图像,文件
归档时间: |
|
查看次数: |
31426 次 |
最近记录: |