Django dinamik menü

#1

Django’da yeniyim.Menüyü tüm sayfalarda include ile çağırıyorum. Tüm view’lara veri tabanından çekilen bilgileri göndermem gerekiyor. Bunun daha kısa bir yolu var mı?

view:

def kategoriler(request):
    kats = categoryModel.objects.all()
	return render(request,"kat.html",{'kat':kats})

def test(request):
	return render(request,"test.html",{})

urls:

path('kat/', kategoriler,name="kat"),
path('test/', test,name="test"),

kat.html:

{% extends 'base.html' %}
{% block title %}Kategoriler{% endblock %}

{% block body %}
<div class="container">
{% include 'navbar.html' %}

</div>

{% endblock %}

test.html:

{% extends 'base.html' %}
{% block title %}Test{% endblock %}

{% block body %}
<div class="container">
{% include 'navbar.html' %}

</div>

{% endblock %}

navbar.html:

<nav>
  <ul>
    <li>
      Anasayfa
    </li>
      <li class="dropdown">
      <a data-toggle="dropdown">
        Kategoriler
      </a>
      <div class="dropdown-menu">
        {% for cat in kat%}
        <a class="dropdown-item" href="#">{{cat.kategori_adi}}</a>
        {% endfor %}
      </div>
    </li>
  </ul>
</nav>

Menü, ‘/kat’ sayfasında doğru şekilde çalışıyor ama ‘/test’ sayfasında veri tabanından çektiğim verileri, ‘test’ view’da paramtre olarak vermediğim için dropdown menü boş. Tüm view’larda default olarak veritabanı nesnesini (kats = categoryModel.objects.all()) nasıl verebilirim. Bunu kısa bir yolu var mıdır?

0 Likes

#2

En iyi çözüm spa tarzı bir site tasarlamandır.Onu nasıl yapabilirsin şöyle; backend kısmını Django Rest framework ile kodlarsın, frontend’i artık vue.js veya react ile hatta angular ile yapabilirsin, en rahatı vue 'dur bana göre.
Django Rest framework zor bir framework değildir aslında ama django yu class yapısıyla kodlamayı öğrendikten sonra rest framework e geç yoksa yabancılık çekebilirsin.

0 Likes