Django URL-тег не работает при динамической загрузке страницы - PullRequest
3 голосов
/ 15 января 2020

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

Я пытаюсь динамически заполнить HTML страницы при входе в систему. Для внешнего приложения I используйте 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>

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

Теперь я создал переменную js с тегом'li ', имеющим идентификатор «обувь-рынок-выпадающий». Я планирую динамически добавить и создать тег '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 Ответ

1 голос
/ 17 января 2020

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

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

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

"<a href='${men_shoe_link}'>Shoes</a>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...