Показ рекламы между постами django ? Попытка показать рекламу после определенного количества постов

Я хочу реализовать такую вещь, Как facebook показывает рекламу, когда мы прокручиваем сообщения, после 4-го или 5-го сообщения мы видим некоторые объявления, как я могу сделать это, пожалуйста, может кто-нибудь сказать мне? Если есть ссылка на видео, пожалуйста, поделитесь

Между двумя такими постами

Я просматриваю все сообщения по циклу for, если есть вложенные циклы for, пожалуйста, поделитесь, как я могу зациклить две разные модели в одном цикле, показывая 1-й элемент одной модели после 5-го элемента другой модели

Спасибо 💗

** Я не использую google ad sense, вы можете себе представить, как я буду создавать свою собственную модель, возможно, ту же модель поста, где is_ads=True будет поле, подобное этому.

Это моя модель поста-

class Post(models.Model):
    postuuid = models.UUIDField(default=uuid.uuid4,unique=True,editable=False)
    user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, null=True)
    title = models.CharField(max_length=150,blank=False)
    text =  models.TextField(null=True,blank=False)
    image = models.ImageField(upload_to='post_images/',null=True,blank=True,default="")
    created_at = models.DateTimeField(auto_now_add=True, null=True)
    likes = models.ManyToManyField(User, blank=True, related_name="post_like")
    tag= models.CharField(max_length=150,blank=True)
    post_url=models.URLField(max_length=150,blank=True)
    video = models.FileField(upload_to='post_videos/',null=True,blank=True,default="")
    # community = models.ForeignKey(communities,on_delete=models.CASCADE)

    def __str__(self):
        return self.title

Посмотрев на это, я думаю, что лучшим вариантом будет создание функции представления, которая создает два набора запросов и объединяет их в один, который вы можете передать контексту. Это будет что-то вроде этого:

# settings.py
AD_POST_FREQUENCY = 5 # Use this to control the frequency of ad posts appearing in the list of posts.


# views.py
from settings import AD_POST_FREQUENCY

def post_list(request):

    ad_posts = Post.objects.filter(is_ad=True)
    non_ad_posts = Post.objects.filter(is_ad=False)

    posts = []

    non_ad_post_section_count = 0
    for i, post in enumerate(non_ad_posts):
        posts.append(post)
        if i % AD_POST_FREQUENCY == 0:
            ad_post = ad_posts[non_ad_post_section_count]
            posts.append(ad_post)
            non_ad_post_section_count += 1

    context = {
        'posts': posts,
    }

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

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

Я сам не пробовал, но надеюсь, что это поможет вам.

Вернуться на верх