在Django項目中,我有一個迷你導航欄,這個導航欄在〜30%的模板中很常見。我決定採取不同的路線,而不是將其納入我的全球base.html
。在將一個Django模板導入到另一個Django模板時遇到NoReverseMatch
我第一次寫這個獨立的觀點:
from django.template.loader import render_to_string
def navbar(origin=None):
if origin == '1':
locations = get_approved_loc(withscores=True)
else:
locations = get_approved_loc()
obj_count = get_all_obj_count()
return render_to_string("mini_navbar.html",{'top_3_locs':locations[:3],\
'other_cities':len(locations[3:]),'obj_count':obj_count})
我旁邊添加它的模板,它需要通過是在:
{% include "mini_navbar.html" with origin='1' %}
當我運行這段代碼,我得到一個NoReverseMatch
錯誤。看來功能navbar
從不運行。所以它發送的上下文變量(例如top_3_locs
或other_cities
等)永遠不會被填充。因此NoReverseMatch
。
這種模式有什麼問題,它有什麼解決方法?一個說明性的例子可以做到這一點。
'include'不叫一個視圖,它包含另一個模板,你包含的兩個片段是不相關的 – Sayse
不需要視圖在另一個模板中包含一個模板只是使用包含 –
你做過的同樣的事情早些時候,做一個模板,幷包含在base.html – Exprator