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

我已经搜索过了,但没有任何东西可以解决问题或准确无误。

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

我该怎么做?

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


慕妹3146593
浏览 59回答 2
2回答

红糖糍粑

有几种方法可以在不同的视图(页面)上存储和显示信息:您可以使用会话:#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']您可以将模型与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...

哔哔one

您可以将其作为 HTML 请求参数传递到 url 中,例如,在您的 pageA 模板中<a href="{% url 'pageB' %}?some_filter={{ some_filter }}">to page B</a>在 pageb 视图中,您可以从请求对象中获取过滤器def page_b_view(request):&nbsp; &nbsp; some_filter = request.GET.get('some_filter')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python