【问题标题】: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.html、product-list.html、view-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 框架来拥有单页应用程序