簡體   English   中英

MEDIA_ROOT MEDIA_URL:通過Django渲染靜態服務器頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM