簡體   English   中英

在不同的頁面中返回過濾結果 - Django

[英]Returning a filter result in a different page - Django

我已經搜索過了,但沒有任何接縫可以做到這一點或准確無誤。

假設我在 A.html 頁面上有兩個網站我有一個過濾器 (djnago_filter) 和 B.html 是空的。 如果用戶提交搜索表單,他會從頁面 A.html 重定向到頁面 B.html,其中結果顯示為 for 循環。

我該怎么做?

我正在考慮將數據從查詢集傳遞到另一個視圖,但必須有更好的解決方案。

您可以將其作為 url 中的 HTML 請求參數傳遞,例如,在您的 pageA 模板中

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

在 pageb 視圖中,您可以從請求 object 中獲取過濾器

def page_b_view(request):

    some_filter = request.GET.get('some_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 ......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM