我需要在我的頁面上進行子導航。我從主導航所在的base.html繼承,但我不知道如何進行每頁不同的子導航。Django中的子導航
我想過製作一個模板標籤,我可以在每個模板文件中爲子導航指定項目,並且只有在指定任何子導航項目時才輸出子導航。別人怎麼做?
我需要在我的頁面上進行子導航。我從主導航所在的base.html繼承,但我不知道如何進行每頁不同的子導航。Django中的子導航
我想過製作一個模板標籤,我可以在每個模板文件中爲子導航指定項目,並且只有在指定任何子導航項目時才輸出子導航。別人怎麼做?
爲什麼你不能有一個單獨的子導航塊並覆蓋子模板中的該塊?
base.html文件
<a href="">Calls</a>
<a href="">Messages</a>
{% block subnav %}
{% endblock %}
calls.html
{% extends "base.html" %}
{% block subnav %}
<a href="">Outbound calls</a>
<a href="">Inbound calls</a>
{% endblock %}
messages.html
{% extends "base.html" %}
{% block subnav %}
<a href="">Sent messages</a>
<a href="">Recieved messages</a>
{% endblock %}
來實現這樣可以創建一個templatetag一個需要參數的簡單方法,例如頁面樹中當前頁面的唯一ID或者段落。
E.g.
@register.simple_tag
def subnavigation_for_page(request, page_id, *args, **kwargs):
qs = Page.objects.filter(is_active=True)
current_page = qs.get(id=page_id)
sub_navigation = list()
for page in qs.filter(level__gt=current_page.level):
if page.level > current_page.level:
sub_navigation.append(page)
return sub_navigation
您可以擴展該示例以將呈現的導航作爲html返回或使用'as'節點返回變量並在模板本身內定義html。
包可能會感興趣:
+1,這就是我建議。你可以像現在一樣使用你的視圖,而且它還有一個額外的好處,如果你用一個div來包圍你的塊,你可以很容易地包含異步更新(例如'