включить файлы изображений в шаблоны Django показывает битую ссылку? - PullRequest
1 голос
/ 16 февраля 2011

Все,

Я попробовал советы, найденные на форуме .К сожалению, я все еще застрял.Изображение не появляется в шаблоне.Насколько я отследил ошибки, теперь они двоякие:

1) там, где должна появиться картинка, есть еще неработающая ссылка и сообщение об ошибке:

Failed to load resource: the server responded with a status of 404 (NOT FOUND),
**http://127.0.0.1:8000/Point3D/grafiek/laptop.jpg**

Так чтоидет по правильному пути, но не может найти изображение .. Который находится в моем MEDIA_ROOT или я получаю:

Resource interpreted as image but transferred with MIME type text/html with:
**http://127.0.0.1:8000/Point3D/grafiek/**

2) Другая ошибка заключается в том, что если я иду к: http://127.0.0.1:8000/media/ iget:

Permission denied: /media/

возможно, это как-то связано с этим.

В остальном я следовал решению Робертса на данный момент, но без всякой удачи ..

Любая помощь будет очень признательна!

Ответы [ 4 ]

1 голос
/ 16 февраля 2011

Предполагается, что носитель в вашей файловой системе находится по адресу:

/home/username/django-project/media/images/favicon.ico

В вашем settings.py должно быть:

import os

PROJECT_PATH = os.path.dirname(__file__)
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/media/'

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.media',
)

Ваш проект urls.py также должен содержать следующеекоторый должен работать только в режиме отладки:

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

Ваш шаблон должен содержать мультимедиа, как показано ниже:

<link rel="icon" href="{{ MEDIA_URL }}images/favicon.ico" />
1 голос
/ 16 февраля 2011

Отказано в разрешении на / media / именно то, что должно произойти, так как в противном случае каждый пользователь вашей страницы мог бы просматривать все файлы в этом каталоге (Это было бы то же самое, что и настройка Apache для разрешения индексирования каталога, то есть в большинстве случаев не то, что вам нужно. Попробуйте получить доступ к файлу в браузере, вставив полный URL-адрес (и включите URL-адрес мультимедиа в свой путь!):

http://127.0.0.1:8000/media/Point3D/grafiek/laptop.jpg

Если это не сработает, убедитесь, что у вас настроены Django или Apache для обслуживания статических файлов, к которым вы пытаетесь получить доступ.

редактирование:
И еще одна вещь, которая может вызвать ваши проблемы: / media / является значением по умолчанию для URL-адреса администратора. Если ваш админ медиа-URL и ваш медиа-URL одинаковы, это не хорошо. Измените это так, чтобы ваши MEDIA_URL и ADMIN_MEDIA_PREFIX не совпадали.

1 голос
/ 16 февраля 2011

Включаете ли вы {{ MEDIA_ROOT }} в свой тег.

Кроме того, убедитесь, что вы вызываете шаблон с RequestContext объектом, потому что иначе {{ MEDIA_ROOT }} не будет установлено в вашем шаблоне. Попробуйте использовать django.views.generic.simple.direct_to_template вместо django.shortcuts.render_to_response. Обратите внимание, что direct_to_template вызывается так же, как render_to_response, за исключением того, что в качестве первого аргумента принимается request.

from django.views.generic.simple import direct_to_template
# your view code here
return direct_to_template(request, 'path/to/template.html', **kwargs)
1 голос
/ 16 февраля 2011

Как выглядит ваш шаблон? Это должно быть что-то вроде:

<img src="{{ MEDIA_URL }}Point3D/grafiek/laptop.jpg" alt="" />

Я предполагаю, что правильный путь для вашего изображения должен быть http://127.0.0.1:8000/media/Point3D/grafiek/laptop.jpg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...