Шаблон Django не отображает элементы словаря

У меня есть словарь с именем Rooms. Я отправляю элементы словаря в файл home.html

Views.py

from django.shortcuts import render

# Create your views here.

rooms = [
    {'id': 1, 'name': 'Lets learn Python!'},
    {'id': 2, 'name': 'Front-End Developer'},
    {'id': 3, 'name': 'Back-End Developer '},    
]

def home(request):
    context = {'rooms': rooms}
    return render(request, 'base/home.html', context)

def rooms(request, pk):
    room = None
    for i in rooms:
        if i['id'] == int(pk):
            room = i
    context = {'room': room}
    return render(request, 'base/room.html', context) 

home.html

{% extends 'main.html' %}

{% block content %}
<h1>Home Template</h1>

<div>
    <div>
        {% for room in rooms %}
            <div>
                <h5>{{room.id}} -- <a href="/room/{{room.id}}">{{room.name}}</a></h5>
            </div>
        {% endfor %} 
    </div>
</div>

{% endblock content %}

Home.html отображает <h5> текст, но не отображает элементы словаря.Я пробовал переименовывать context переменные.

Тебе нужен этот плохой мальчик room/<int:pk>/ в твоем urlpatterns

    from django.urls import path 
    from . import views  
    urlpatterns = [
        path('', views.home, name="Home"),
        path('room/<int:pk>/', views.rooms, name="Rooms")
    ]

Я понял, что rooms(dict) и rooms(func) сталкиваются. Я просто переименовал func в room!

Обновленный Views.py

from django.shortcuts import render

# Create your views here.

rooms = [
    {'id': 1, 'name': 'Lets learn Python!'},
    {'id': 2, 'name': 'Front-End Developer'},
    {'id': 3, 'name': 'Back-End Developer '},    
]

def home(request):
    context = {'rooms': rooms}
    return render(request, 'base/home.html', context)

def room(request, pk):
    room = None
    for i in rooms:
        if i['id'] == int(pk):
            room = i
    context = {'room': room}
    return render(request, 'base/room.html', context) 
Вернуться на верх