为了账号安全,请及时绑定邮箱和手机立即绑定

在不同的页面中返回过滤结果 - Django

在不同的页面中返回过滤结果 - Django

慕妹3146593 2023-03-16 15:41:31
我已经搜索过了,但没有任何东西可以解决问题或准确无误。假设我在 A.html 页面上有两个网站,我有一个过滤器 (djnago_filter),而 B.html 是空的。如果用户提交了搜索表单,他将被从 A.html 页面重定向到 B.html 页面,在该页面中使用 for 循环显示结果。我该怎么做?我正在考虑将数据从查询集传递到另一个视图,但必须有更好的解决方案。
查看完整描述

2 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

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

  1. 您可以使用会话

#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...


查看完整回答
反对 回复 2023-03-16
?
哔哔one

TA贡献1854条经验 获得超8个赞

您可以将其作为 HTML 请求参数传递到 url 中,例如,在您的 pageA 模板中


<a href="{% url 'pageB' %}?some_filter={{ some_filter }}">to page B</a>

在 pageb 视图中,您可以从请求对象中获取过滤器


def page_b_view(request):


    some_filter = request.GET.get('some_filter')


查看完整回答
反对 回复 2023-03-16
  • 2 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信