0

私は初心者ですが、どこでも解決策を探しています。アップロードした画像が表示されません (404)。

画像リンクからのエラー (例: http://192.168.1.1:8000/media/portfolio/icon.png/ -> ちなみに、この適切な URL ) :

No SuperPages matches the given query.

SuperPages は、url オブジェクトを含む私のモデルです。

http://www.muhuk.com/2009/05/serving-static-media-in-django-development-server/のように、メディアファイル用にすべてを構成しました。明確にするために、一般的なビューのみを使用している場合、うまく機能します。しかし、ビューでは画像を見ることができません (画像へのリンクは問題ありません)。静的ファイルはうまく機能します。これは私のコードです:

urls.py

from mysite.cms.views import superpages
urlpatterns = patterns('',
(r'^(?P<url>.*)$', superpages),)

ビュー.py

from django.template import loader, RequestContext
from mysite.cms.models import SuperPages
from django.shortcuts import get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect

DEFAULT_TEMPLATE = 'default.html'

def superpages(request, url):
if not url.endswith('/') and settings.APPEND_SLASH:
    return HttpResponseRedirect("%s/" % request.path)
if not url.startswith('/'):
    url = "/" + url

f = get_object_or_404(SuperPages, url__exact = url)

t = loader.get_template(DEFAULT_TEMPLATE)
c = RequestContext(request, {
    'superpages': f,
})
return HttpResponse(t.render(c))
4

1 に答える 1

1

urls.py に問題があります。パターンを次のように定義したとします。

urlpatterns = patterns('',
    (r'^(?P<url>.*)$', superpages),
    (r'^media/(?P<path>.*)$',
     'django.views.static.serve',
     {'document_root': settings.MEDIA_ROOT}),
)

のような URLは最初のパターンにhttp://192.168.1.1:8000/media/portfolio/icon.png/一致するため、ビューが呼び出されて 404 が発生します。必要なことは、キャッチオールパターンを urlpatterns の最後に配置することです。または、ミドルウェアを使用して別のアプローチを選択することもできます。例を見てください。superpagessuperpagesdjango.contrib.flatpage

于 2011-08-24T18:37:41.497 に答える