我在弄清楚django中的媒体路径问题时遇到了一些问题。在settings.py文件中,我有ADMIN_MEDIA_PREFIX ='/ media / admin /'。所以某些css和js文件,如forms.css,RelatedObjectLookup.js文件都有这样的路径
/media/admin/js/admin/RelatedObjectLookup.js 和/media/admin/css/forms.css。
我的项目中没有像/ media / admin那样的文件夹。但是,当我使用manage.py脚本运行服务器并浏览页面时,正在加载上述css和js文件。我可以看到文件forms.css和RelatedObjectLookup.js都在django本身。但是,我对django本身的路径感到困惑。它是这样的
/usr/local/lib/python2.7/site-packages/django/contrib/admin/media/js/calendar.js
所以,我很困惑,文件是如何获取的。在服务器日志中,我可以看到其他文件的GET请求,但不能看到这些文件(forms.css和RelatedObjectLookup.js)
运行manage.py后,我在myserver请求日志中有以下内容。
[23/Aug/2011 02:20:36] "GET /media/js/DateTimeShortcuts.js HTTP/1.1" 304 0
[23/Aug/2011 02:20:36] "GET /media/js/custom/new_appointment_new.js HTTP/1.1" 304 0
[23/Aug/2011 02:20:36] "GET /media/js/fancybox/jquery.mousewheel-3.0.4.pack.js HTTP/1.1" 304 0
[23/Aug/2011 02:20:36] "GET /media/js/fancybox/jquery.fancybox-1.3.4.pack.js HTTP/1.1" 304 0
[23/Aug/2011 02:20:36] "GET /media/js/fancybox/jquery.fancybox-1.3.4.css HTTP/1.1" 304 0
尽可能没有form.css和RelatedObjectLookup.js文件的请求。
有什么建议吗?
答案 0 :(得分:2)
查看AdminMediaHandler使用的runserver command。如您所见,AdminMediaHandler不会记录任何内容。
答案 1 :(得分:1)
ADMIN_MEDIA_PREFIX
是一个网址路径。如果您使用runserver
运行服务器,Django的服务器负责解析对http://localhost/media/admin/whatever.js
的请求并提供管理员的静态文件。它不会将这些文件的GET请求打印到控制台。
但是,如果您没有使用runserver
运行,则必须确保ADMIN_MEDIA_PREFIX
指定的路径实际上为管理员提供静态文件。例如,在我们的某个网站中,我们的STATIC_URL
为http://static.oursite.com/
,STATIC_ROOT
为/srv/django-static/oursite/
。 ADMIN_MEDIA_PREFIX
设置为http://static.oursite.com/admin/
。当我们运行python manage.py collecstatic
时,它会获取所有静态文件并将它们放在STATIC_ROOT
中。它还在admin
中创建了一个名为STATIC_ROOT
的文件夹,并将所有管理员的文件放在那里。另一台服务器负责提供http://static.oursite.com/
上的内容,它只是提供STATIC_ROOT
文件夹,其中还包含admin
文件夹。这样,正常的静态文件就会得到解决,以及管理员的解析。