Как передать имя контекста в вызов url в моем шаблоне html django

Это файл urls.py

from django.urls import path
from . import views


urlpatterns = [
   path('', views.index, name='index'),
   path('blog/', views.blog, name='blog')
]

Это файл views.py

def index(request):

# Home
home = Home.objects.latest('updated')

# About
about = About.objects.latest('updated')
profiles = Profile.objects.filter(about=about)

# Skills
categories = Category.objects.all()

# Portfolio
portfolios = Portfolio.objects.all()


context = {
    'home': home,
    'about': about,
    'profiles': profiles,
    'categories': categories,
    'portfolios': portfolios
}


if request.method == "POST":
    form_inst = FormFill(name = request.POST['name'],
                        email = request.POST['email'],
                        text = request.POST['text'])
    form_inst.save()
    return redirect('/')

return render(request, 'index.html', context=context)

Это html файл, в котором я пытаюсь передать каждое имя контекста в navlink

.
<div class="nav__menu" id="nav-menu">
<ul class="nav__list">
                    <li class="nav__item"><a href="{% url 'blog' %}" class="nav__link active" target="_blank">Blog</a></li>
                    <li class="nav__item"><a href="{% url 'index' {{home}} %}" class="nav__link">Home</a></li>
                    <li class="nav__item"><a href="{% url 'index' {{sbout}} %}" class="nav__link">About</a></li>
                    <li class="nav__item"><a href="{% url 'index' {{profiles}} %}" class="nav__link">Skills</a></li>
                    <li class="nav__item"><a href="{% url 'index' {{categories}} %}" class="nav__link">Portfolio</a></li>
                    <li class="nav__item"><a href="{% url 'index' {{portfolios}} %}" class="nav__link">Contact</a></li>
 </ul>
</div>

Я хочу передать ключи контекстного словаря в url каждой навигационной ссылки в html-файле

Вы не можете передавать сами объекты в урлах, вы можете передавать только параметры, такие как первичный ключ ваших моделей, или строки, или числа.

В вашем случае вам не нужно передавать никаких параметров, потому что вашим представлениям они не нужны. Достаточно только url. Затем вы пишете представление для каждого из ваших случаев использования, и внутри каждого представления вы получаете необходимые объекты из базы данных, передаете их в контекст и затем отображаете представление.

Так для примера портфолио:

#urls.py
urlpatterns = [
    ....
    path("/portfolios", views.portfolio_list, name="portfolio_list"),
    ....
]

#views.py
def portfolio_list(request):
    portfolios = Portfolio.objects.all()
    context = {"portfolios": portfolios}
    return TemplateResponse(
        request, template="portfolio_list.html", context=context
    )

#home.html
....
<li class="nav__item"><a href="{% url 'portfolio_list' %}" class="nav__link">Portfolio</a></li>

#portfolio_list.html
#list all your portfolio objects here
Вернуться на верх