首页 > 解决方案 > 在不同的页面中返回过滤结果 - Django

问题描述

我已经搜索过了,但没有任何接缝可以做到这一点或准确无误。

假设我在 A.html 页面上有两个网站,我有一个过滤器 (djnago_filter),而 B.html 是空的。如果用户提交搜索表单,他会从页面 A.html 重定向到页面 B.html,在该页面中使用 for 循环显示结果。

我该怎么做?

我正在考虑将数据从查询集传递到另一个视图,但必须有更好的解决方案。

标签: pythondjangodjango-filter

解决方案


有几种方法可以在不同的视图(页面)上存储和显示信息:

  1. 您可以使用Sessions
    #views.py

    #set the session key in the view A:
    request.session['info'] = {'key', 'value'}
    
    #get the session key in the view B:
    info = request.session['info']
    del request.session['info']
  1. 您可以将模型JSONField一起使用:
    #app/models.py

    #model to store information from page A
    from django.contrib.auth.models import User
    class MyModel(models.Model):
        user = models.ForeignKey(User,
            on_delete=models.DELETE,
            related_name="info")
        info = models.JSONField()

    #views.py
    #store data in the view A:
    from app.models import MyModel
    MyModel.objects.create(user=request.user, info={'key', 'value'})
    
    #retrieve data in the view B:
    info = MyModel.objects.get(user=request.user)

但实际上,一切都取决于您打算实现的逻辑。实际上还有其他方法,例如使用异步 Ajax、React、WebSockets ......


推荐阅读