【问题标题】:Django url tag not working when dynamically loading the page动态加载页面时Django url标签不起作用
【发布时间】:2020-05-02 06:09:41
【问题描述】:

这是我第一次发布问题,所以我会尽可能简洁。

我正在尝试在登录时动态填充页面的 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>

点击“男士”href 时,我的浏览器会重定向到以下网址:http://localhost:9000/marketplaces/shoes/men/

现在我创建了一个带有 id 为“shoes-marketplace-dropdown”的“li”标签的 js 变量。 我计划在$(document).ready( function {...}) 的上述标签中动态添加并创建 id 为“marketplace-list dynamic”的“ul”标签。

我的做法是:

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 页面构建正确,但是当我单击“Men”链接时,在浏览器中会看到以下 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')

我的猜测是,不知何故,包含 url 的 HTML 代码作为字符串放置在 javascript 中,并没有通过 urls.py 中定义的 Django 解析为它的关联值。你能帮我么?我不知道如何解决这个问题。

提前谢谢你!

【问题讨论】:

  • 你是对的,只有 HTML 文件的内容由 Django 模板引擎处理,而不是任何链接的 JS(或 CSS)文件。为此,您需要将 JS 直接放在 HTML 文件中,在 &lt;script&gt; 标记内
  • 非常感谢罗宾,您的回答真的很有帮助。祝你有美好的一天!

标签: javascript django url tags


【解决方案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>"

【讨论】:

  • 谢谢!以上是我使用的方法,遵循罗宾的评论!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2012-04-28
  • 2013-09-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多