Не используйте одинаковые имена переменных для
{% for categories in categories %}
Вы должны использовать
{% for category in categories %}
Где ваша переменная категории? Шаблон как просмотр вы загружаете только HTML, у вас нет загруженной переменной категории для использования, вы можете сделать 2 вещи ...
Пользовательские контекстные процессоры - Переменная, которую вы устанавливаете с помощью контекстных процессоров, будет доступна во всех ваших шаблонах, это обычно используется для проверки статистики пользователя без необходимости вручную делать это в ваших представлениях, в В вашем случае используйте это, только если вы хотите использовать переменные категорий на всех своих страницах
Объявите вашу функцию контекста
def foobar_processor(request):
return Category.objects.all()
Загрузите его на свои settings.py
'OPTIONS': {
'context_processors': [
'foo.bar.processors.foobar_processor',
...,
],
}
источник: https://www.webforefront.com/django/setupdjangocontextprocessors.html
Просмотры - Вы можете настроить один вид для своего URL в этом представлении, вы можете загрузить свой контекст и отправить его на свою HTML-страницу
from django.views.generic.base import TemplateView
from .models import Category
class HomePageView(TemplateView):
template_name = "quickblog/category_list.html"
def get_context_data(self, **kwargs):
context = super(HomePageView, self).get_context_data(**kwargs)
context['categories'] = Category.objects.all()
return context
Источник: http://pythonclub.com.br/class-based-views-django.html