亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Djangon 2.2 跨頁面過濾單個數據集

Djangon 2.2 跨頁面過濾單個數據集

MM們 2024-01-15 21:19:14
在我的 django 應用程序中,我有一個主頁,在表格中顯示每種類型的書籍數量,它還有一個搜索欄,允許按類型、標題或作者過濾書籍,然后將數據發布到搜索頁面,允許在表格中查看圖書條目。在搜索結果頁面上,我希望能夠使用一組擴展的搜索欄進一步過濾同一組數據 - 包括原始過濾器,以及發布日期和評級等過濾器。在擴展搜索中,我不想丟失原始搜索 - 因此,例如,如果我在主頁上搜索恐怖類型,然后希望進一步過濾以僅在 sesrch 頁面上包含評價較高的書籍,我不想丟失如果我不再添加過濾器的話,恐怖過濾器。這可能嗎?本質上我想知道是否可以將不同的過濾器應用于單個視圖?先感謝您
查看完整描述

3 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

所以我猜您的第一選擇是創建一個用于搜索的表單,然后呈現帶有結果的頁面。當我們正在討論如何擴展它時,很高興看到您如何實現這一目標。


在沒有看到您對搜索功能的實現的情況下,我認為一個很好的例子是將搜索從基于表單的搜索轉移到查詢語言。


但我們不要超前!畢竟,讓我們以簡單的方式處理表單吧!


假設這是你的表格


from django import forms

class MyForm(forms):

   title #

   author #

   genre #

現在,每次標題、作者、流派選擇都會隨請求一起發送。那么簡單的方法就是向第二個表單添加更多內容并在渲染時將當前狀態傳遞給它!


from django import forms

class SecondForm(forms):

   title

   author

   genre

   language # new stuff!

因此,當您在函數處理程序/類視圖中獲取當前數據時,您可以從 MyForm 數據創建一個新表單 SecondForm,您可以在此處閱讀更多信息。



def refine_search(request):

    # the form has been submitted so it's a safe assumption to have request.method == 'POSt'

    # but this will make it harder to share a link to a search page


    # load the search results

    # prepare the second form to be rendered on the result page

    form = SecondForm(request.POST)

    # now your can render your result page passing the form

    # and it will be rendered with the state from the previous!


查看完整回答
反對 回復 2024-01-15
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

我不確定您是否想要在擴展過濾器中選擇流派?因為如果是的話,我看不到問題......?如果不是,為什么不使用隱藏輸入來傳遞流派呢? forms.CharField(widget=forms.HiddenInput())



查看完整回答
反對 回復 2024-01-15
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

django 可以使用許多技術在視圖之間傳遞參數。

查看完整回答
反對 回復 2024-01-15
  • 3 回答
  • 0 關注
  • 247 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號