【问题标题】:Using django url tag inside jquery ajax在 jquery ajax 中使用 django url 标签
【发布时间】:2019-10-02 11:09:28
【问题描述】:

我正在构建一个包含一些类别的页面,当用户单击链接时,我会继续获取该特定类别的详细信息(该类别的产品)。我想,做到这一点的方法是使用 jQuery Ajax。无论如何,我附加数据的部分是这样的:

...
$.ajax({
    ...
    success: function(results) {
        $("#cards").empty();
        for (let iterator = results.length -1; iterator>=0; iterator--) {
            $("#cards").append(
            '<a href="{% url "product" '+results[iterator].id+' %}">'
            +'<div>'
            +    '<div class="card mb-5 shadow-sm">'
            +        '<img class="card-img-top"'
            +             'src="'+results[iterator].image+'" />'
            +        '<div class="card-body">'
            +            '<h5 class="card-title">'+results[iterator].name+'</h5>'
            +            '<p class="card-text">'+results[iterator].price+'</p>'
            +        '</div>'
            +    '</div>'
            +'</div>'
            +'</a>'
            );
        }
    },
    ...
});
...

根据这段代码,我得到这个错误:

Reverse for 'product' with arguments '('+results[iterator].id+',)' not found. 1 pattern(s) tried: ['(?P<id>[0-9]+)/$']

自从我以json 的形式获得results 后,我按照我的方式使用它没有问题,但是在我的容器div 周围添加a 标记时问题就出现了。我不明白我应该采取什么行动,因为我对 Django 和 jQuery 都没有真正的经验。

【问题讨论】:

标签: javascript jquery django


【解决方案1】:

你不能像那样混合 Django 模板和 JavaScript。 Django 模板在服务器端呈现,JavaScript 在浏览器中执行。

当 Django 模板引擎解析{% url "product" '+results[iterator].id+' %} 时,它会将'+results[iterator].id+' 视为字符串并将其按原样传递给url 模板标签。但是此字符串与 URL 模式不匹配,这就是您收到此错误的原因。

对于您正在尝试做的事情,有多种解决方案。可能需要最少更改的方法是在您的 Ajax 请求的响应中返回产品 URL。对于如何准确地做到这一点的答案,你必须发表你的看法。

【讨论】:

猜你喜欢
  • 2012-10-31
  • 2021-09-23
  • 1970-01-01
  • 2014-01-12
  • 2013-02-01
  • 2011-08-25
  • 2014-04-23
  • 2011-05-09
相关资源
最近更新 更多