Django RequestContext и медиа не работает - PullRequest
0 голосов
/ 24 августа 2011

Я новичок, но я везде искал решение. Я не вижу загруженных изображений (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),)

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 Ответ

1 голос
/ 24 августа 2011

Что-то не так с вашим 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/, соответствует шаблону first , так что ваше представление superpages вызывается и вызывает 404. Чтовам нужно сделать, чтобы ваш шаблон «все 100 *» поместился в самом конце ваших шаблонов URL.Или вы можете выбрать другой подход с промежуточным программным обеспечением, посмотрите, что django.contrib.flatpage делает для примера.

...