0

저는 초보자입니다. 그러나 나는 해결책을 찾고있었습니다. 업로드 된 이미지를 볼 수 없습니다 (404).Django RequestContext와 미디어가 작동하지 않습니다.

No SuperPages matches the given query. 

SuperPages은 다음과 같습니다 - (> 그런데,이 적절한 URL 8000/미디어/포트폴리오/icon.png/: HTTP : //192.168.1.1 예를 들어) 이미지 링크에서

오류 내 모델은 URL 개체를 포함하고 있습니다.

http://www.muhuk.com/2009/05/serving-static-media-in-django-development-server/과 같은 미디어 파일의 모든 것을 구성했습니다. 그리고 일반 뷰만을 사용하고있을 때는 명확합니다. 그러나 전망이 있으면 이미지를 볼 수 없습니다 (이미지 링크는 괜찮습니다). 정적 파일은 훌륭하게 작동합니다. 그래서 내 코드입니다 :

urls.py 뭔가 잘못이 urls.py.에있다

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

views.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)) 

답변

1

같은 http://192.168.1.1:8000/media/portfolio/icon.png/ 같은

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

에 대한 URL이 superpages보기가 호출되도록 패턴과 일치하고 당신이해야 할 무엇 (404)이 포괄 넣어 제기 : 나는 당신이이처럼 패턴을 정의했다고 가정 superpages 패턴이 URL 패턴 끝에 있습니다. 또는 미들웨어로 다른 접근 방식을 선택할 수 있습니다. 예를 들어 django.contrib.flatpage의 기능을 참조하십시오.

+0

감사합니다. 나는 superpages 전에 미디어 urlpattern을 옮겼고, 나는 필요한 것을 가지고있다. 하지만 또 다른 질문이 있습니다. 미들웨어로 해결해야할까요? 어떤 솔루션이 더 최적입니까? 아니면 오른쪽 대기열에서이 urlpatterns를 사용할 수 있습니까? 어쨌든 감사합니다. 나는이 문제로 몇 시간 동안 고민했다 :) –

+0

두 방법 모두 '최적'이다. :). 앱을 쉽게 재사용 할 수있게하려면 'MIDDLEWARE_CLASSES'에 URL 패턴을 추가하는 것보다 항목을 추가하는 것이 더 간단 할 수도 있지만 그건 제 의견입니다. – brutasse

관련 문제