2011-08-24 37 views
0

我是初学者,但我一直在寻找解决方案。我看不到上传的图像(404)。Django RequestContext和媒体不起作用

No SuperPages matches the given query. 

超级页面是: -

从图像链接(>顺便说一下,这个正确的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

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

有一些问题与您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/第一模式,使您的superpages观点被称为匹配,并提出了一个404,你需要做的是把你的杂物箱superpages模式在urlpatterns的最后。或者您可以选择不同的中间件方法,请参阅django.contrib.flatpage的示例。

+0

谢谢。我在超级页面之前移动了媒体urlpattern,并且我有我需要的。但我还有一个问题。我应该尝试用中间件解决这个问题吗?哪种解决方案更优化?或者,也许在正确的队列中移动这个urlpatterns是可以接受的?不管怎样,谢谢。我挣扎了几个小时,这个问题:) –

+0

这两种方法都是'最佳':)。如果您希望您的应用轻松重复使用,在“MIDDLEWARE_CLASSES”中添加条目可能比添加URL模式稍微简单一些,但这仅仅是我的看法。 – brutasse