Django для тега шаблона цикла, сделанного с помощью CBV

Я пытаюсь создать простой блог. На одной из страниц блога отображаются все записи блога на сайте. Я знаю, что мне нужно использовать цикл for, но я не знаю, что вводить для переменных. Во всех учебниках, которые я видел, использовались представления на основе функций, а я использую CBV. Буду очень признателен за помощь.

all_posts.html

{% extends "base.html" %}
{% block content %}
<div class="container">
  <h1>Blog Posts</h1>
</div>
<div class="container">
 {% for  in  %}
   
 {% endfor %}
</div>
{% endblock %}

Views.py

from django.shortcuts import render
from django.views import generic
from . import models
from django.contrib.auth import get_user_model
User = get_user_model()
from django.urls import reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
# Create your views here.

class create_blog_post(generic.CreateView, LoginRequiredMixin):
    model = models.Blog_Post
    template_name = 'blog_app/creat_post.html'
    success_url = '/'
    fields = ('post_title', 'blog_content', 'files')

class view_blog_post(generic.ListView):
    model = models.Blog_Post
    template_name = 'view_post.html'
class delet_blog_post(generic.DeleteView, LoginRequiredMixin):
    model = models.Blog_Post
    template_name = 'delete_post.html'
class all_blog_posts(generic.ListView):
    model = models.Blog_Post
    template_name = 'all_posts.html'

modles.py

from django.db import models

# Create your models here.
class Blog_Post(models.Model):
    slug = models.SlugField(max_length=1000, editable=False, null=True)
    post_title = models.CharField(max_length=100, editable=True, blank=False, null=True)
    blog_content = models.TextField(max_length=10000, blank=False, editable=True, null=True)
    files = models.FileField(blank=True, null=True, upload_to=True)
    date = models.DateTimeField(blank=False, null=True, auto_now=True, editable=False)
    likes = models.IntegerField(blank=True, null=True, editable=False)

Как упоминается в документации по общим представлениям на основе классов

Ну, если вы имеете дело с объектом модели, это уже сделано за вас. Когда вы имеете дело с объектом или набором запросов, Django может заполнить контекст, используя строчную версию имени класса модели. Это предоставляется в дополнение к записи object_list по умолчанию, но содержит точно такие же данные, т.е. publisher_list.

.

Так что, скорее всего, у вас будет blog_post_list в дополнение к object_list. Но вы можете установить значение context_object_name, чтобы указать любое значение, которое вы хотите (точно так же, как вы указали template_name).

Вы также можете просмотреть следующий раздел о переопределении get_context_data(), чтобы добавить больше вещей в контекстный словарь.

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