【问题标题】:Go to another page without refresh [Django]不刷新就转到另一个页面[Django]
【发布时间】:2022-01-20 12:46:09
【问题描述】:

如何实现在点击另一个 URL 的链接后不刷新就转到另一个页面。更多示例,我有一个书籍列表显示,当我单击其中一本书时,它会将我重定向到选定的书籍页面。这是代码链接的示例。 <a class="link" href="{% url 'books:view_book_detail' obj.book.name obj.pk %}">View book</a>

我知道history.pushState(),但如何实际使用它?它可以与来自 Django 的 URL 一起使用吗?有没有其他方法呢?

【问题讨论】:

    标签: javascript python html django ajax


    【解决方案1】:

    使用常规 django 或纯 javascript 不足以达到此目的。

    React、Angular、Vue 等现代 JavaScript 框架通常用于这些案例场景。

    但是,尽管没有 JS 框架,但也不是不可能做到这一点。 您可以使用的一种方法是使用 AJAX。

    您可以创建一个base.html 作为我们的基本模板,然后将应用程序分解为home.htmlproduct-list.htmlview-product.html 等小组件。我们可以根据我们的要求进一步包括。

    {% include 'view-product.html' with product=product_object %}
    (类似这样)

    /view_product/<id>/ 发出AJAX 请求,该请求应返回JsonResponse 关于显示哪个组件的信息。通过 JavaScript,我们可以处理加载特定组件。

    但同样,这不是一个好的做法,我建议将 JavaScript 框架用于单页应用程序。

    【讨论】:

      【解决方案2】:

      我在 view.py 中使用了许多 if 语句来做到这一点
      您需要使用 <button type="button"> 而不是 <a> ,并检查 POST 请求是否具有该名称以响应不同的上下文,还需要在模板中使用 if 语句根据响应更新前端
      这是一个不好的做法,强烈建议使用 JS 框架来拥有单页应用程序

      【讨论】:

        猜你喜欢
        • 2019-04-28
        • 2014-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-03
        • 1970-01-01
        • 2017-05-11
        • 1970-01-01
        相关资源
        最近更新 更多