django - ссылка на статические файлы в шаблонах - PullRequest
1 голос
/ 06 февраля 2012

У меня есть шаблоны для моего приложения django, разработанные приложением веб-дизайна (axure).Таким образом, все ссылки на статические файлы в этих файлах шаблонов являются относительными, например

<img src="/resources/image/icon.gif"/>

Я следовал приведенной здесь инструкции https://docs.djangoproject.com/en/dev/howto/static-files/, чтобы изменить настройки приложения, чтобы они включали статические файлы и фиксировали STATIC_URL.,Однако, таким образом, мне все еще нужно поставить этот токен {{ STATIC_URL }} перед каждой ссылкой на статические файлы.

Существует ли общий способ сделать так, чтобы django мог принимать эти относительные пути к статическим файлам?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 06 февраля 2012

Это не «относительный» путь.Это то, что называется «относительный абсолют».Когда вы начинаете с /.Он говорит браузеру ссылаться на следующий путь непосредственно из домена.Это не имеет ничего общего с Джанго.Это связано с браузером, и они все работают таким образом.

В {{ STATIC_URL }} нет ничего особенного;это просто простой и безопасный способ префикса ваших ссылок на статические файлы с правильным путем.На самом деле вы можете жестко закодировать полный URL в своем HTML:

<img src="/path/to/static/resources/image/icon.gif"/>

Но если ваш STATIC_URL когда-либо изменится, вам не повезет.Вот почему вы используете {{ STATIC_URL }}, так что независимо от того, установлено ли оно на "/ static /" или "http://cdn.someprovider.com/myproject/something-else/static/", ваши ссылки всегда работают.

Длинные и короткие, нет," общего способа "нет.Вы должны указать браузеру, где именно он может найти файл, и для этого необходимо использовать {{ STATIC_URL }}.

0 голосов
/ 06 февраля 2012

Если вы используете бэкэнд, такой как nginx, вы можете установить для вашего / staticimage указание на / path / to / static / resources / image /, а затем использовать /staticimage.

Я уверен, что любой веб-серверВы можете использовать такое отображение пути.

...