[英]MEDIA_ROOT MEDIA_URL : Rendering static server pages via Django
我的settings.py文件中有以下設置:
ROOT_PATH = os.path.dirname(os.path.realpath(__file__))
MEDIA_ROOT = os.path.join(ROOT_PATH,'site_media')
MEDIA_URL = 'http://xx.xxx.xx.xx:yyyy/site_media/'
And in urls.py
urlpatterns += patterns('',
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
在我的網頁中:
<img border="0" width="120" align="Left" src="/site_media/images/logo.gif">
我可以在項目路徑中看到文件:
Prj / site_media / images / logo.gif
但是,當我在HTML頁面中啟動項目時,仍然看不到圖像:
Prj > python manage.py runserver xx.xxx.xx.xx:yyyy
Validating models...
0 errors found
Django version 1.3.1, using settings 'Prj.settings'
Development server is running at http://xx.xxx.xx.xx:yyyy/
Quit the server with CONTROL-C.
我不確定問題是什么,如何解決?
以下是我在Firebug中看到的Request / Response標頭:
GET http://xx.xxx.xx.xx:yyyy/site_media/images/logo.gif
Response Headers
Content-Type text/html; charset=utf-8
Date Thu, 12 Apr 2012 17:00:01 GMT
Server WSGIServer/0.1 Python/2.7.2
Request Headersview source
Accept image/png,image/*;q=0.8,*/*;q=0.5
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Host xx.xxx.xx.xx:yyyy
Referer http://xx.xxx.xx.xx:yyyy/
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0) Gecko/20100101 Firefox/7.0
服務器日志:
[12/Apr/2012 09:35:11] "GET /site_media/images/logo.gif HTTP/1.1" 200 122202
請注意,即使CSS / JS腳本也未加載:
GET jquery-1.4.2.js
200 OK xx.xxx.xx.xx:yyyy 119.3 KB xx.xxx.xx.xx:yyyy 6.96s
HeadersResponseCache
Response Headersview source
Content-Type text/html; charset=utf-8
Date Thu, 12 Apr 2012 17:00:03 GMT
Server WSGIServer/0.1 Python/2.7.2
Request Headersview source
Accept */*
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Host xx.xxx.xx.xx:yyyy
Referer http://xx.xxx.xx.xx:yyyy/
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0) Gecko/20100101 Firefox/7.0
由於您使用的是Django 1.3.1,而不是MEDIA_ROOT和MEDIA_URL,因此建議您使用django.contrib.staticfiles
仔細閱讀此頁
在您的情況下,它將類似於:
settings.py:
STATIC_ROOT = os.path.join(ROOT_PATH,'site_media')
STATIC_URL = '/site_media/'
INSTALLED_APPS = (
# Your installed apps....
# ...
'django.contrib.staticfiles',
)
# Not sure what exact context processors you need, but "static" will be one of them
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.request",
"django.contrib.messages.context_processors.messages",
)
要保持管理頁面正常運行,請訪問urls.py
# Admin
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Admin:
(r'^admin/', include(admin.site.urls)),
# Your other url code
)
然后可以在您的網頁上輸入:
<img border="0" width="120" align="Left" src="{{ STATIC_URL }}images/logo.gif">
請記住,您必須使用正確的上下文處理器來呈現模板:
return render_to_response('my_page.html', locals(),
context_instance=RequestContext(request))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.