Chcę wysłać wartość łańcuchową jako zmienną JavaScript z strony klienta, który ma być używany w szablonie Django. W szczególności ciąg jest względną ścieżką obrazu i ma być używany w szablonie Django z statycznym tagiem szablonu Django. Pliki statyczne są na Amazon S3 i powinny być serwowane przy użyciu tagu statycznego szablonu Django.

W szablonie Django potrzebuję zmiennej photo_url z JavaScript.

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

Na razie, w JavaScript, osadzam innerhtml rozpiętości z photo_url jako względny adres URL zdjęcia (/statyczne/images/abc.png):

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

Ale w ten sposób nie mogę obsługiwać plików statycznych z S3, nawet jeśli zawieram statyczny znacznik w InnerHTML w JavaScript. Jaki jest najlepszy sposób na to, aby to zrobić (przepustka javascript zmienna do szablonu Django)?

1
Santosh Ghimire 30 listopad 2013, 20:13

2 odpowiedzi

Najlepsza odpowiedź

{% static %} to tylko tag wygody, możesz przeciągnąć swój statyczny adres URL w dowolnym momencie.
Nie będziesz mógł użyć zmiennych JS (dołączając je ani w żaden sposób) w {% static %} znacznika, ponieważ JS zostanie wykonany wraz z HTML bez żadnych przetwarzania.

1
Alex Parakhnevich 30 listopad 2013, 16:21

Jeśli STATIC_URL jest dostępny w szablonie, można ustawić Global JS zmiennej, aby zapisać go jak:

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

Następnie zawijaj tworzenie URL fotograficznego w funkcji

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

W ten sposób będziesz mógł osiągnąć to, co chcesz.

Alternatywnie możesz zdefiniować {{x0} } metoda w modelach, aby zapewnić pełny adres URL z domeną.

0
Benjamin 10 grudzień 2013, 22:24