Django случайный пост не отображается на base.html

Я пытаюсь заставить рекламу отображаться в боковой панели моего сайта (в файле base.html). Однако объявления не отображаются.

Код, который я использую, следующий:

views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import *
import random

def base(request):
    allSideAds=SideBarAd.objects.all()
    random_sideAd = random.choice(allSideAds) if allSideAds else None
    return render(request, 'base.html', {'random_sideAd': random_sideAd})

models.py

from django.contrib import admin
from django.db import models
from django.urls import reverse

class SideBarAd(models.Model):
    AdImage = models.ImageField(help_text='Enter Image Here')
    AdLink = models.URLField()
    MaxAdViews = models.PositiveBigIntegerField()
    AdViews = models.PositiveBigIntegerField()
    Approved = models.BooleanField()
    
    def get_absolute_url(self):
        return self.AdImage

base.html

        {% if random_sideAd %}
            <a href="{{ random_sideAd.AdLink }}">
                <img src="{{ random_sideAd.AdImage.url }}" alt="Ad Image">
            </a>
        {% endif %}

Когда я загружаю страницу, объявление, которое находится в моей базе данных, не показывается через base.html.

попробуйте распечатать allSideAds, чтобы убедиться в его существовании, если вы уверены, что импортировали SideBarAd и там есть объекты, попробуйте

allSideAds= list(SideBarAd.objects.all())
random_sideAd = random.choice(allSideAds)

Мне удалось выяснить, почему это не работает. Вместо того чтобы запускать это через views.py, я решил использовать context_processors.py.

context_processors.py:

import random
from .models import SideBarAd


def sidebar_ad(request):
    sidebar_ads = SideBarAd.objects.filter(Approved=True)

    sidebar_ad_data = random.choice(sidebar_ads) if sidebar_ads else None

    return {'sidebar_ad': sidebar_ad_data}
Вернуться на верх