Pao*_*olo 1 django static-files django-staticfiles
我坚持因的 常绿 问题,静态文件没有送达.相反,放置在MEDIA_ROOT子树中的文件可以正确地提供MEDIA_URL.
剥离settings.py:
DEBUG = True
STATIC_URL = '/static/'
STATIC_ROOT = '/home/foo/devel/static'
MEDIA_URL = '/media/'
MEDIA_ROOT = '/home/foo/devel/media'
# the following is deprecated but is it seems grappelly requires it
ADMIN_MEDIA_PREFIX = STATIC_URL + "grappelli/"
STATIC_FILES = ()
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
Run Code Online (Sandbox Code Playgroud)
为了创建我做的项目:
$ cd /home/foo/devel/
$ virtualenv testdrive
$ . bin/activate; pip install django; cd testdrive
$ django-admin.py fbtest
Run Code Online (Sandbox Code Playgroud)
并获得此目录树(剥离):
. <-- /home/foo/devel/
??? bin
??? fbtest
? ??? fbtest
? ??? media
? ? ??? foo.jpg
? ??? static
? ??????? foo.jpg
??? include
??? lib
Run Code Online (Sandbox Code Playgroud)
下面的文件STATIC_URL应该由Django staticfiles自动提供(不是我的情况),而其他文件必须手动处理.所以我将这些行添加到urls.py:
import settings
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL.lstrip("/"),
'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT,
}),
)
Run Code Online (Sandbox Code Playgroud)
访问http://host/media/filebrowser/foo.jpg作品,同时http://host/static/foo.jpg给出错误404.为什么?
下面的文件
STATIC_URL应该由Django staticfiles自动提供(不是我的情况),而其他文件必须手动处理.
那是不对的.Django从未服务STATIC_ROOT过 - 甚至没有开发过程.它所确实做的就是在指定的任意目录中的每个应用程序的"静态"目录中的文件和文件STATICFILES_DIRS可用STATIC_URL.你实际上并没有手动放任何东西STATIC_ROOT; 事实上,在开发中,你甚至不应该有那个目录.简而言之,当您运行管理命令时,STATIC_ROOT它只是生产中静态文件的转储基础collectstatic.
在开发中,所有静态文件都应该进入someapp/static,其中"someapp"是他们应用的应用程序.在该文件适用于该项目作为一个整体,例如全局CSS文件的情况下,你需要创建一个完全不同的目录(即不相同,STATIC_ROOT或MEDIA_ROOT),然后将该目录添加到STATICFILES_DIRS.例如,我通常将其称为"资产",因此:
STATICFILES_DIRS = (
os.path.join(os.path.dirname(__file__), 'assets'),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1643 次 |
| 最近记录: |