[英]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”是子數據庫表的主鍵。
我的問題:
domain.com/schools/1
, domain.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.