Django как получить данные из базы данных и отобразить их на отдельной странице

Я работаю над трекером активности для моего класса веб-разработки, и мы работаем с django. Я пытаюсь добавить страницу, которая показывает детали активности на отдельной странице, передавая ее id в url для отображения информации об активности, специфичной для этого объекта базы данных (подобно новостным статьям на веб-сайтах)

Я думаю, что проблема кроется в моей странице с видами. Мне нужна помощь в написании того, как правильно получить информацию из базы данных, чтобы передать ее в html-форму. Страница загружается нормально с id, прикрепленным к url, но никакой информации не отображается

views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpRequest
from . models import Activity

# Create your views here.
def index(request: HttpRequest):
    activites = Activity.objects.all()
    return render(request, "activity/index.html", {"activites" : activites})

def new_activity(request: HttpRequest):
        if request.method == 'POST':
            params = request.POST
            activity = Activity(
                activity_name = params.get("activity_name")

            )
            activity.save()
            return redirect("/")
        return render(request, "activity/new_activity.html")

def activity(request: HttpRequest, id):
     id = Activity.objects.get(id=id)
     return render(request, "activity/activity.html")

Вот что у меня есть для html-страницы (при необходимости я могу переименовать передаваемые данные) activity.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>{{ activity.activity_name }}</h1>

</body>
</html>

models.py (если нужно посмотреть)

from django.db import models
from datetime import timedelta

# Create your models here.
class Activity(models.Model):
    id = models.BigAutoField(primary_key=True)
    activity_name = models.TextField()

    def time_spent(self):
        delta = timedelta()
        for timelog in self.timelog_set.all():
            delta += (timelog.end_time - timelog.start_time)
        return str(delta)

class TimeLog(models.Model):
    id = models.BigAutoField(primary_key=True)
    start_time = models.TimeField()
    end_time = models.TimeField()
    activity = models.ForeignKey("Activity", related_name="time_logs", on_delete=models.CASCADE)

и мой urls.py

from django.urls import path
from . import views

urlpatterns = [
    path("", views.index, name="index"),
    path("new_activity/", views.new_activity, name="new_activity"),
    path("activity/<int:id>", views.activity, name="activity")
]

Я не могу добавить никаких дополнительных библиотек или модулей, которые не обсуждались в классе, поэтому я не могу изменить это слишком сильно. Спасибо за помощь!

Пробовал передавать различные аргументы и имена, но ничего не помогло

Вы не передали модель деятельности в представление activity.html после получения идентификатора.

вы не отправили контекст.

def activity(request: HttpRequest, id):
     obj = Activity.objects.get(id=id)
     return render(request, "activity/activity.html" {'activity': obj})
# activity.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>{{ activity.activity_name }}</h1>

</body>
</html>
Вернуться на верх