我的Django应用程序管理面板中的图标有问题。 我的根媒体文件夹中包含所有文件:
'/files/dev/projects/mynewproject/media'
但在控制台中我收到404错误。
我的urls.py
urlpatterns = static(settings.STATIC_URL, document_root=settings.STATIC_ROOT
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + patterns('',
# ...
)
我的MEDIA_ROOT:
MEDIA_ROOT = '/files/dev/projects/mynewproject/media'
终端响应:
/media/adminextra/js/jquery.js HTTP/1.1" 404 1829
答案 0 :(得分:0)
如果
MEDIA_ROOT = '/files/dev/projects/mynewproject/media'
,网址为
http://localhost:8000/media/adminextra/js/jquery.js
然后文件的本地路径必须是:
/files/dev/projects/mynewproject/media/adminextra/js/jquery.js
而您(在评论中)说您的文件位于:
/files/dev/projects/mynewproject/project/concerthall/media/adminextra/js
当然,没找到。
这对于STATIC路径和URL的工作方式不同,因为您之间有collectstatic
和STATIC文件查找器机制。我建议将您的资源放入STATIC源,因为它们属于它们。 MEDIA不适用于此。
此外,最佳做法应避免在您的设置中使用硬编码的绝对文件路径。这在共享项目中不起作用。
<git_root>/mynewproject/settings/base.py
中的示例设置:
BASE_APP_DIR = os.path.dirname(os.path.realpath(project_module.__file__))
PROJECT_DIR = os.path.dirname(BASE_APP_DIR)
# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static_collected')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
STATICFILES_DIRS = (
os.path.join(BASE_APP_DIR, 'static'),
)
将您的网络资源(JS / CSS / img)驻留在<git_root>/mynewproject/static
及更低的应用目录下,并由collectstatic
输出到<git_root>/static_collected
。在制作时,您可以让NGINX或Apache在后一个目录中提供文件。
将文件放入:
mynewproject/project/concerthall/static/adminextra/js/jquery.js
(我认为,concerthall
是一个带有models.py
文件的应用。)
在使用它的管理员类中:
class Media:
js = ("adminextra/js/jquery.js",)