1

私の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
4

1 に答える 1

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))
于 2012-04-12T18:57:39.637 に答える