2017-06-21 35 views
0

我只編寫了2個星期,但我試圖學習Django,Python和HTML,使我的第一個網站。 (請原諒我,如果我的問題是嚴重的措辭,這是我第一次的問題)複選框的url和url到python Django

我有一個包含形成複選框列表布爾模型:

class Topic(models.Model): 
    cells = models.BooleanField(blank=True) 
    stainingtechniques = models.BooleanField(blank=True) 
    enzymes = models.BooleanField(blank=True) 
    disease = models.BooleanField(blank=True) 

然後我要產生一些信息在基於用戶從上面選擇的主題的頁面上。我不知道該怎麼做,但我想到的一個想法是創建一個包含主題名稱的url/slug,例如,如果他們選中單元格和酶的複選框,但不提交染色技術,則會發送它們到/細胞-酶。然後在/ cells-enzymes頁面,代碼檢查細胞或染色技術或細胞或酶或任何其他信息,並在頁面上顯示相應的信息。

我的主要問題是,如果「細胞」布爾值爲真,我該如何將用戶重定向到「/ cells」的slu?? /複選框被選中。同時,如果他們檢查兩種染色技術但不染色技術,我可以將它們發送到/ cells +酶中嗎? (我需要添加到models.py,視圖py,url py) 然後有沒有辦法在python中檢查網址中的內容? (爲了說,ok單元格在url中,所以讓我們顯示單元格的信息)

或者,我可以向任何其他想法如何實現上述目標。

謝謝你在前進,尼基(我的理解,如果這些問題進行了措辭如此糟糕是無法回答)

+0

你有一個提交按鈕或完成按鈕,它可以將複選框數據發送到後端HTML?或者您希望在檢查/啓用複選框後立即執行此操作? –

+0

會有比兩個更多的話題,所以我想第一個選擇,說人可以檢查第一個和第三個主題,而不是第二個,然後點擊提交按鈕它會'返回'(換句話說,更新url用戶發送到)第一個和第三個已被檢查,這是不可能的第二個選項,我認爲(我應該已經明確將有超過兩個主題)我已經更新了主q以更好地反映這一點 – nickynw

+0

他問你是否希望通過ajax或通過表單(使用提交按鈕)完成此操作。好像你希望通過表單完成它。您可以將選定的值發送到您的views.py,然後對其進行處理並相應地重定向。 –

回答

0

所以,我對你的問題的理解是,你要根據自己的複選框,輸入生成不同的URL的人,並採取相應不同的URL

所以,讓我們假設你有以下格式在HTML複選框(由不同的看法功能服務?):

<input type="checkbox" name="options[]" value="cells" /> 
<input type="checkbox" name="options[]" value="enzymes"/> 
<input type="checkbox" name="options[]" value="disease" /> 

您可以編寫相應的代碼views.py擺脫POST請求勾選複選框形式已經提交這樣的後:

checkboxes_selected = request.POST.getlist('options[]') 

其中checkboxes_selected將包含所有選定的複選框的列表。如果用戶只選擇了細胞和酶,checkboxes_selected會像['cells','enzymes']然後。你可以生成一個URL做類似:

url = '/'+'-'.join(checkboxes_selected) 

這將在這種情況下產生像/cells-enzymes一個網址,你可以經過重定向到通過做HttpResponseRedirect(url)提交意見。您可以將動態網址映射到網頁並根據網址生成它們。你會發現更多關於相同的here

希望這會有所幫助!

+0

嗨,這聽起來幾乎正是我想要的,但我很難理解它是如何工作的,說我有複選框,我如何提交表單,以便views.py可以處理/使用POST請求中的信息? (所以目前,theres複選框,你選擇它們,但沒有發生,因爲沒有提交按鈕) – nickynw

+0

我認爲你仍然不完全清楚你的django概念。我建議在嘗試深入研究製作網站之前,閱讀一些簡短的教程。我會建議:[與Django探戈](http://www.tangowithdjango.com/)或[掌握Django](http://masteringdjango.com/django-book/) –