【问题标题】:Django[AJAX] build url from Django ModelDjango [AJAX] 从 Django 模型构建 url
【发布时间】: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; 的类型构建路由,但它也不起作用,同样的错误。

Github Issue for this matter...

【问题讨论】:

  • 感谢您的评论,我明白了,虽然我觉得很奇怪,没有任何内置的,那么我们应该如何“构建” 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


【解决方案1】:

基本上解决方案是在 TEMPLATE 中传递构建的 url,然后您可以在 JS Ajax 调用中使用它。 例如:

onclick=filterItemType("{% url 'boring:filter_items' 'Common'%}")

function filterItemType(url_type) {
$.ajax({
    type: "GET",
    url: url_type,

【讨论】:

    猜你喜欢
    • 2014-08-24
    • 1970-01-01
    • 2016-09-16
    • 2021-04-26
    • 2012-01-07
    • 2019-02-03
    • 2014-01-12
    • 2020-07-18
    • 1970-01-01
    相关资源
    最近更新 更多