Django URL-тег не работает при динамической загрузке страницы

Я впервые пишу вопрос, поэтому буду максимально кратким.

Я пытаюсь динамически заполнять HTML страницы при входе в систему. Для внешнего интерфейса я использую Django + HTML & CSS. Я хочу динамически добавить элемент «li» в существующий «ul».

Предыдущий код, когда страница была статически загружена, был:

<ul id="marketplace-list">
  <li id="shoes-marketplace-dropdown" class="dropdown dropdown-toggle">
    <a href="{% url 'shoes_marketplace' %}">Shoes</a>
    <ul class="dropdown-menu" role="menu">
      <li><a href="{% url 'shoes_men' %}">Men</a></li>
      <li><a href="{% url 'shoes_women' %}">Women</a></li>
    </ul>
  </li>
</ul>

При нажатии на ссылку «Мужчины» мой браузер перенаправлял на следующий URL: http: // localhost: 9000 / marketplaces / shoes / men /

Теперь я создал переменную js с тегом 'li' с идентификатором 'shoes-marketplace-dropdown'. Я планирую динамически добавлять и создавать тег 'ul' с идентификатором 'marketplace-list динамически' к указанному выше тегу в $(document).ready( function {...}) .

Мой подход:

var shoes_market = " <li id="shoes-marketplace-dropdown" class="dropdown dropdown-toggle">" +
                    " <a href="{% url 'shoes_marketplace' %}">Shoes</a>" +
                    " <ul class="dropdown-menu" role="menu">" +
                       " <li><a href="{% url 'shoes_men' %}">Men</a></li>" +
                       " <li><a href="{% url 'shoes_women' %}">Women</a></li>" +
                    " </ul>" +
                   "</li>";

И в функции $ (document) .ready () у меня есть:

$("#marketplace-list").prepend(shoes_market)

HTML-страница создается правильно, но когда я нажимаю ссылку «Мужчины», в браузере появляется следующий URL:

http: // localhost: 9000 /% 7B %% 20url% 20 'shoes_men'% 20 %% 7D

URL определяется в urls.py следующим образом:

url(r'^marketplaces/shoes/men/$', views.shoes_men, name='shoes_men')

Я предполагаю, что HTML-код, который содержит URL-адрес, помещенный в javascript в виде строки, не анализируется через Django, как определено в urls.py, для соответствующего значения. Не могли бы вы мне помочь? Я понятия не имею, как решить это.

Заранее спасибо!

Всего 1 ответ


Проблема возникает из-за того, что ваш URL-тег находится в JS вместо HTML, а механизм шаблонов Django не работает со статическими файлами JS. Если вы действительно хотите продолжить реализацию JS, то в шаблоне HTML создайте скрипт-тег с переменной

<script>
var men_shoe_link = {% url 'shoes_men' %}
</script>

И затем вы можете использовать эту переменную в JS, так как ваш код находится в функции $ (document) .ready (), сначала будет создан ваш var, а затем будет обрабатываться файл JS. Итак, в строке JS теперь вы можете иметь

"<a href='${men_shoe_link}'>Shoes</a>"

Есть идеи?

10000