【发布时间】:2021-09-05 02:15:58
【问题描述】:
朋友们好,我正在用 Django 建立一个网站,我决定为我的项目创建一个过滤器,你可以像这样过滤项目:Item.objects.filter(type=item_type),所以基本上我创建了一个 url一个 slug:item_type,并返回一个 JsonResponse,其中项目被解析为 JSON。
然后我在我的 js 文件中创建了一个 Ajax 调用,当我想调用 url 以按类型过滤时,我不断收到错误:
function filterItemType(type) {
$.ajax({
type: "GET",
data: $(this).serialize(),
url: "{% url 'boring:filter_items' type%}",
...
错误:
Not Found: /boring/{% url 'boring:filter_items' type%}
[21/Jun/2021 11:32:54] "GET /boring/%7B%%20url%20'boring:filter_items'%20type%%7D HTTP/1.1" 404 6103
所以基本上,据我了解,JS 没有解析 Django {% url .... %}。 我不知道该怎么做才能让 JS 构建路由……就像我通常在模板中那样……
PS:我也尝试使用分隔为 -> url: "{% url 'boring:filter_items' %}" + "/"+ type; 的类型构建路由,但它也不起作用,同样的错误。
【问题讨论】:
-
感谢您的评论,我明白了,虽然我觉得很奇怪,没有任何内置的,那么我们应该如何“构建” url 来制作要求?因为如果我只是简单地说: url: "boring/boring:filter_items/"+type 它可以工作,但 url 是静态的。如果您愿意,可以检查 Guthub 问题,这就是我所做的,但我想看看是否有在 js 中构建 django url 的解决方案。
-
我认为最好的策略是简单地将 HTML 中的 url 呈现为某个标签的属性并从那里获取它。例如
$(this).serialize(),建议您使用表单标签,为什么不简单地在表单action属性上呈现url? -
这其实是一个非常好的主意! :O 我会看看我是否可以实现它!谢谢,朋友!
-
所以我居然解决了!!!不是你建议的,但我把你的想法放在了我的脑海里,然后我想出了一个聪明的解决方案:github.com/pulgamecanica/BoringDjango/commit/…
标签: jquery django ajax django-views