【发布时间】:2020-07-29 09:29:08
【问题描述】:
我试图创建一个简单的应用程序,它有一个类别列表,每个类别都有一个帖子列表。
当我在 Django Admin 中删除 Category 对象时,它会在 Admin 中消失,但仍会在模板中呈现。这是管理员只显示两个类别
为导航栏提供服务的 base.html 也显示 3
我已清除缓存并硬重新加载。 这是我的代码:
Views.py
from django.shortcuts import render, get_object_or_404
from .models import Post, Category
from django.views.generic import ListView, DetailView
category_list = Category.objects.all()
def privacy(request):
return render (request, 'privacy.html', {'category_list':category_list})
def home(request):
return render(request,'home.html',{'category_list':category_list})
def categoryDetail(request, slug):
category = get_object_or_404(Category, slug=slug)
post = Post.objects.filter(category=category)
return render(request,'category_detail.html',{'category':category, 'post':post, 'category_list':category_list})
和模板,home.html
{% if category_list %}
<!-- Content Row -->
<div class="row">
{% for cat in category_list %}
<div class="col-md-4 mb-5">
<div class="card h-100">
<div class="card-body">
<h2 class="card-title"><a href="{% url 'category_detail' cat.slug %}">{{ cat.name }}</a></h2>
<p class="card-text">{{ cat.summary|truncatechars:100 }}</p>
</div>
<div class="card-footer">
<a href="{% url 'category_detail' cat.slug %}" class="btn btn-primary btn-sm">More Info</a>
</div>
</div>
</div>
{% endfor %}
</div>
<!-- /.row -->
{% else %}
<h3>COMING SOON ...</h3>
{% endif %}
base.html 中的类似
<ul class="navbar-nav ml-auto">
{% for cat in category_list %}
<li class="nav-item">
<a class="nav-link" href="{% url 'category_detail' cat.slug %}">| {{cat.name}}</a>
</li>
{% endfor %}
</ul>
models.py
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=255)
summary = models.TextField()
slug = models.SlugField(max_length=255, unique=True)
def __str__(self):
return self.name
class Post(models.Model):
title= models.CharField(max_length=255)
category = models.ForeignKey('Category', on_delete=models.CASCADE)
def __str__(self):
return self.title
我关注了一个关于在 Views.py 中创建这些功能的视频,因为我希望能够在同一页面上显示类别的详细信息和其中的帖子列表......我有一种可怕的感觉错误是由于在函数之外定义 category_list...或更糟!
另外,是否需要在 base.html 中写一个函数来动态更新菜单选项?
【问题讨论】:
标签: python django django-views