Django RequestContext和媒体不起作用

时间:2011-08-24 17:09:13

标签: django django-views django-generic-views requestcontext

我是初学者,但我一直在寻找解决方案。我看不到上传的图片(404)。

来自图片链接的错误(例如:http://192.168.1.1:8000 / media / portfolio / icon.png / - >顺便说一下,这个正确的网址):

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),)

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 个答案:

答案 0 :(得分:1)

你的urls.py有问题。我想你已经定义了这样的模式:

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

http://192.168.1.1:8000/media/portfolio/icon.png/之类的网址与第一个模式相匹配,因此您的superpages视图会被调用并提升404.您需要做的就是把你的全部{{你的urlpatterns最后的{1}}模式。或者您可以选择使用中间件的不同方法,请参阅superpages的示例。