[英]Django filter().first() returning different result than get()
[英]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')
有幾種方法可以在不同的視圖(頁面)上存儲和顯示信息:
#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']
#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.