TemplateSyntaxError at Не удалось проанализировать остаток

В моем приложении django я пытаюсь получить имя загружаемого изображения из переменной JSON. В его HTML-ключе есть имя изображения, которое будет отображаться. Я читаю этот ключ и добавляю его в статический путь, но получаю эту ошибку

TemplateSyntaxError at  Could not parse the remainder 

JSON

 var json = [{
        "html": "abc.jpg", //testing this failed
        "col": 1,
        "row": 1,
        "size_y": 2,
        "size_x": 2
    }, {
        "html": "def.jpg", 
        "col": 4,
        "row": 1,
        "size_y": 2,
        "size_x": 2
    },

    {
        "html": "bac.jpg",
        "col": 6,
        "row": 1,
        "size_y": 2,
        "size_x": 2
    },


    {
        "html": "xyz.jpg",
        "col": 1,
        "row": 3,
        "size_y": 1,
        "size_x": 1
    }, {
        "html": "Brand.jpg",
        "col": 4,
        "row": 3,
        "size_y": 1,
        "size_x": 1
    },

    {
        "html": "Brand.jpg",
        "col": 6,
        "row": 3,
        "size_y": 1,
        "size_x": 1
    }

    ];

Мой цикл используется для извлечения имени изображения и других необходимых параметров

for(var index=0;index<json.length;index++) {
   gridster.add_widget('<li class = "new" ><button class = "delete-widget-button" style = "float: right;">-</button><img src = "{% static \'images/'+json[index].html+'\' %}"></li>',json[index].size_x,json[index].size_y,json[index].col,json[index].row);
};

Проверьте в этом цикле переменную, которую я получаю

var json = [{
    "html": "abc.jpg", //testing this failed
    "col": 1,
    "row": 1,
    "size_y": 2,
    "size_x": 2
  }, {
    "html": "def.jpg",
    "col": 4,
    "row": 1,
    "size_y": 2,
    "size_x": 2
  }, {
    "html": "bac.jpg",
    "col": 6,
    "row": 1,
    "size_y": 2,
    "size_x": 2
  }, {
    "html": "xyz.jpg",
    "col": 1,
    "row": 3,
    "size_y": 1,
    "size_x": 1
  }, {
    "html": "Brand.jpg",
    "col": 4,
    "row": 3,
    "size_y": 1,
    "size_x": 1
  }, {
    "html": "Brand.jpg",
    "col": 6,
    "row": 3,
    "size_y": 1,
    "size_x": 1
  }
];

for(var index=0;index<json.length;index++) {
   console.info('<li class = "new" ><button class = "delete-widget-button" style = "float: right;">-</button><img src = "{% static \'images/'+json[index].html+'\' %}"></li>',json[index].size_x,json[index].size_y,json[index].col,json[index].row);
};
{% static \'images/'+json[index].html+'\' %} - вы не можете этого сделать - шаблон отображается на сервере до того, как ваш браузер запустит цикл JavaScript.
Alasdair 22.03.2018 14:04

Итак, как загрузить изображение в этом случае, я хочу загрузить изображение с сервера, соответствующего имени в json

Rookie_123 22.03.2018 14:06

Если json определен в шаблоне, вы можете использовать там тег static. Или вам может быть проще удалить статический тег и жестко закодировать префикс.

Alasdair 22.03.2018 14:08

просто жестко запрограммировать префикс, как в адресе сервера? 127.0.0.1:8000/static/imageshttp://127.0.0.1:8000/static/images

Rookie_123 22.03.2018 14:10

Да, я это имел в виду. Однако вам не нужен домен, подойдет /static/images/.

Alasdair 22.03.2018 14:12

Также, чтобы дать вам представление, мой шаблон чем-то похож на этот jsfiddle.net/52oxn6g9

Rookie_123 22.03.2018 14:12

Позвольте нам продолжить обсуждение в чате.

Rookie_123 22.03.2018 14:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
388
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
{% static \'images/'+json[index].html+'\' %}

Вы не можете этого сделать, потому что тег шаблона {% static %} отображается на сервере перед, а браузер запускает ваш JavaScript.

Вы можете использовать тег get_static_prefix (обратите внимание, что это не будет работать для всех бэкэндов хранения статических файлов).

{% load static %}
"{% get_static_prefix %}" + json[index].html

Или, поскольку вы определяете json в своем шаблоне, вы можете повторно использовать static там.

var json = [{ 
"html": "abc.jpg", //testing this failed 
"image": "{% static "abc.jpg" %}", 
...

Затем используйте image в своем цикле.

Другие вопросы по теме