Как передать имя контекста в вызов 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