python - 如何在 django 上显示类别标题
问题描述
我的问题是在类别页面中,标题、元标题和元描述没有显示。
我在下面上传的图片中展示了它。
我该如何解决?
谢谢
模型.py
class Category(models.Model):
parent = models.ForeignKey('self', blank=True, null=True, related_name='children', on_delete=models.CASCADE)
title = models.CharField(max_length=70, unique=True)
slug = models.SlugField(max_length=70, unique=True)
description = RichTextUploadingField(blank=True, null=True)
meta_title = models.CharField(max_length=120, unique=True, blank=True, null=True)
meta_description = models.TextField(max_length=175, blank=True, null=True)
def __str__(self):
return self.title
class MPTTMeta:
order_insertion_by = ['title']
视图.py
class PostCategoryView(generic.ListView):
template_name = 'posts_category.html'
paginate_by = 9
def get_queryset(self):
slug = self.kwargs.get('slug')
return Post.objects.filter(category__slug=slug, status=1)
def get_context_data(self, **kwargs):
context = super().get_context_data()
context['category'] = Category.objects.all()
return context
类别模板
{% extends 'shared/_MainLayout.html' %}
{% load static %}
{% block head %}
{% block title %}**{{ category.meta_title }}**{% endblock %}
{% block description %}**{{ category.meta_description }}**{% endblock %}
{% endblock %}
{% block content %}
<div class="page-header page-header-style-1 text-center mt-50">
<div class="container">
<h2><span class="color2">**{{ category.title }}**</span></h2>
<div class="breadcrumb">
<a href="/" rel="nofollow">Home</a> >
<span></span><a href="/{{ category.slug }}/" rel="nofollow">**{{ category.title }}**</a>
</div>
</div>
</div>
{% endblock %}
解决方案
您可以设置context_object_name
访问模板中的对象。或者您可以使用默认名称 {{ object_list }}。
例如:
class PostCategoryView(generic.ListView):
template_name = 'posts_category.html'
paginate_by = 9
context_object_name = Example
model = Category
def get_queryset(self):
slug = self.kwargs.get('slug')
return Post.objects.filter(category__slug=slug, status=1)
def get_context_data(self, **kwargs):
context = super().get_context_data()
context['category'] = Category.objects.all()
return context
现在您可以在模板中使用它:
{% for category in Example %}
<li>{{ category.title }}</li>
{% endfor %}
如果您没有设置 context_object_name,您可以使用默认名称“object_list”,如下所示:
{% for category in object_list %}
<li>{{ category.title }}</li>
{% endfor %}
您还必须在 ListView 中设置模型,例如:model = Category
推荐阅读
- r - predict.gbm() 2.1.4 与 2.1.3 的预测不一致
- python - pandas 数据框的颜色行并转换为 HTML 表
- c# - 如何使用 c# 制作几个不同的列表?
- angular - 如何在应用程序组件中获取 URL 参数
- javascript - 访问 shadowRoot 或 DOM(例如 querySelector)v 缓存变量的性能影响?
- xamarin - Xamarin.iOS:如何将 NavigationBar 添加到视图
- javascript - 未捕获的 ReferenceError: 要求未在 app.js:3 中定义
- scala - 使用名称对 Scala 枚举器进行排序
- coldfusion - CFClient 调用 CFC http://domain/cfc/users.cfc 时出错:未找到
- c# - 从加密文本中获取 IV 以用于解密方法