2013-11-30 11 views
1

Я хочу отправить строковое значение в качестве переменной javascript с клиентской стороны для использования в шаблоне django. В частности, строка является относительным путем для изображения и должна использоваться в шаблоне django с тегом шаблона django static. Статические файлы находятся на Amazon S3 и должны обслуживаться с использованием статического тега шаблона django.Передать переменную от javascript к шаблону django

В шаблоне django мне нужна переменная photo_url из javascript.

<img class = "main-img" src = "{% static photo_url %}" alt="main photo" /> 

В настоящем время, в JavaScript, я внедренный в innerhtml пролета с PHOTO_URL как относительным URL фото (/static/images/abc.png):

<img class = "main-img" src = ' + photo_url + ' alt="main photo" /> 

Но этим путь, Я не могу обслуживать статические файлы из S3, даже если я включаю статический тег в innerhtml в javascript. Каков наилучший способ сделать это (передать переменную javascript в шаблон django)?

+0

Передать переменную javascript FROM WHERE? –

+0

Из файла sth.js, который загружается в шаблон django –

+0

Почему бы не отправить его с представления? –

ответ

1

{% static %} - всего лишь удобный тег, вы можете в любое время жестко установить свой статический URL.
Вы не сможете использовать js-переменные (либо их добавление, либо так или иначе) в теге {% static %}, потому что js получает рендеринг вместе с html без какой-либо обработки.

+0

, поэтому , могу ли я жестко установить тег {% static%} из моего javascript? Будет ли это работать? –

+0

Нет, вы не можете. Я имею в виду, что вы на самом деле не должны использовать его и всегда можете жестко кодировать URL. Это относится к вашему утверждению 'Статические файлы находятся на Amazon S3 и должны быть использованы с использованием статического тега шаблона django. ' –

0

Если STATIC_URL доступен в шаблоне вы можете установить глобальную переменную JS для хранения она нравится:

<script> 
STATIC_URL = '{{ STATIC_URL }}'; 
</script> 

Затем завернуть создание URL фотографии в функции

function photo_url(photo) { 
    return STATIC_URL + photo_url; 
} 

Таким образом, вы будете способный достичь того, чего вы хотите.

Альтернативно, вы можете указать get_absolute_url() на своих моделях, чтобы предоставить полный URL-адрес для домена.

+0

Я думаю, вы немного поняли вопрос. @Santosh Ghimire хочет, чтобы изображение отображалось в его шаблоне, а не только для доступа к URL-адресу в js. –

+0

@AlexParakhnevich, я читал этот вопрос в третий раз и думаю, что так и будет. Возможно, я ошибаюсь. – twil

Смежные вопросы