django媒体路径问题

时间:2011-08-23 08:31:54

标签: python django

我在弄清楚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文件的请求。

有什么建议吗?

2 个答案:

答案 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_URLhttp://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文件夹。这样,正常的静态文件就会得到解决,以及管理员的解析。