簡體   English   中英

Django從基於URL的模型列表中獲取當前選擇的模型

[英]Django get currently selected model from a list of models based on URL

我正在使用具有多個模型的Django應用程序:父母,孩子,學校,手機。 每個“父母”(本質上是Django的“用戶”模型)可以有多個孩子,每個孩子可以有一個學校和一個手機。

我已經對網站進行了結構化,以使其盡可能地模塊化。 我的意思是,導航模板在一個文件中,側邊欄模板(包含很多鏈接)在另一個文件中,所有這些都由layout.html文件放在一起。

如果父母訪問該網站,它將被重定向到domain.com/dashboard 在導航欄中,父母可以選擇從下拉菜單中選擇一個孩子。 之后,父/用戶將被重定向到domain.com/dashboard/1 ,其中“ 1”是子數據庫表的主鍵。

我的問題:

  1. 頁面導航到/ dashboard / 1后如何獲取所選值,以便可以將下拉值更改為當前所選的子級?
  2. 從本質上講,我如何才能在整個layout.html文件中獲取有關當前選定子項的信息? 例如,側邊欄鏈接需要在形式domain.com/schools/1domain.com/cellphones/1 ,在這個“1”始終是“孩子”表的主鍵。 此外,此“ sidebar.html”模板本身仍然存在,並且僅包含在layout.html模板中。 目前,我僅正確鏈接到/dashboard/1 ,是因為我正在使用用戶ID遍歷Children數據庫中的所有模型。

我已經設法獲得了所有模板文件(包括sidebar.html)中所有子級的列表,但是我正在努力根據URL /用戶的選擇來獲得單個模型。

在頁面導航到/dashboard/1之后,如何獲取選定的值,以便可以將下拉值更改為當前選定的子級?

這是執行此操作的一種方法,但實際上您需要使用自定義模板標簽來呈現下拉菜單:

<select>
   {% for st in studentlist %}
       <option value="{{ st.pk }}"
         {% if request.url.path|slice:":-1" == st.pk %}selected{% endif %}>{{ st }}</option>
   {% endfor %}
</select>

從本質上講,我如何才能在整個layout.html文件中獲取有關當前選定子項的信息?

您需要將它作為上下文變量從視圖傳遞到模板:

def get_child_dashboard(request, pk=None):
     child = get_object_or_404(Child, pk=pk)
     return render(request, 'dashboard.html', {'child': child})

現在,要引用父級選擇的子級,請在模板中的所有位置使用{{ child }} ,例如:

<p>Hello, you are viewing the dashboard for {{ child.first_name }}</p>  

暫無
暫無

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

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