Связывание изображения в Django - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть новый проект django, который называется mysite. Внутри mysite находится папка static, где находятся все мои изображения.

Внутри mysite также находится папка шаблонов с файлом index.html со следующим основным кодом:

<html>
<head></head>
<body><img src = WHAT GOES HERE?? />
</html>

У меня есть файл views.py в моей папке mysite:

from django.shortcuts import render_to_response
def index(request):
    return render_to_response('index.html',)

В моем файле settings.py STATIC_URL = '/ static /'

Какой именно текст должен идти внутри моего тега img, чтобы правильно ссылаться на файл статического изображения (примечание: я не ищу ссылки на документацию). И нужно ли мне менять какую-либо структуру папок / настроек? Спасибо.

Я добавил следующий тег:
image

Однако он все равно не загружается - похоже, он идет по правильному пути (путь к изображению в браузере говорит 127.0.0.1:8000/static/logo.jpg.). Что мне нужно изменить, чтобы он загружался правильно? И я проверил, чтобы убедиться, что изображение находится в этом месте.

ОБНОВЛЕНИЕ: вот как я наконец-то заставил его работать:

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

(я использую media_url вместо static_url). Есть ли более простой способ сделать это?

Ответы [ 4 ]

0 голосов
/ 31 мая 2018

Если изображение называется «pic.jpg», оно будет

img src = "{{'static/pic.jpg'}}"

Это сработало для меня ... также проверьте, что django.contrib.staticfiles, в установленных_apps settings.py

0 голосов
/ 21 апреля 2011

David542,

Ваша структура должна выглядеть примерно так:

MyProject
    \MySite
        \static

Эта статическая папка будет обслуживаться при использовании runserver.Когда вы переносите свою работу в производственную среду, вы захотите использовать django ./manage.py collectstatic и обязательно использовать статический носитель со статическим URL, который вы указали в файле settings.py.Таким образом, если у вас есть изображение в вашей статической папке, вы можете ссылаться, говоря, что /static/some_image.png

Статические файлы не были включены в Django до версии 1.3.Если вы старше 1,3, это объясняет, почему ваши текущие настройки не работают для вас.(Полагаю, это ваша проблема.)

Надеюсь, это поможет.

Редактировать: И если служение с указанием вашего пути все работает для вас и вам удобно, вы действительно должны использоватьдругой ответ сказал и используйте {{ STATIC_URL }}hi.jpg, как будто вы решите изменить свой статический URL, вам не нужно будет менять свои шаблоны для соответствия, так как они будут работать автоматически.

0 голосов
/ 21 апреля 2011

Сначала прочитайте документацию по обслуживанию статических файлов , затем, когда вы почувствуете, что понимаете принципы обслуживания статических файлов локально и в производстве, прочитайте документы еще раз .

Затем убедитесь, что вы добавили django.contrib.staticfiles в INSTALLED_APPS.

0 голосов
/ 21 апреля 2011

Если изображение называется "hi.jpg", оно будет выглядеть так:

img src = " {{STATIC_URL}} hi.jpg "

Это разрешит файл, загруженный в каталог STATIC_URL, в вашем примере это будет:

/ static / hi.jpg

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