如何解决如何通过 mptt 在我的视图函数中创建面包屑
如何在我的视图函数中创建面包屑?
class Category(MPTTModel):
name = models.CharField(max_length=50,unique=True)
parent = TreeForeignKey('self',on_delete=models.CASCADE,null=True,blank=True,related_name='children')
slug = models.SlugField( null=True,blank=True)
description = models.TextField(null=True,blank=True)
image = models.ImageField(
upload_to=user_directory_path,default='posts/default.jpg')
def get_absolute_url(self):
return reverse('Category:post_single',args=[self.slug])
class Meta:
ordering = ('-name',)
def __str__(self):
return self.name
class Post(models.Model):
class NewManager(models.Manager):
def get_queryset(self):
return super().get_queryset() .filter(status='published')
options = (
('draft','Draft'),('published','Published'),)
category = TreeForeignKey('Category',blank=True)
title = models.CharField(max_length=250)
excerpt = models.TextField(null=True)
image = models.ImageField(
upload_to='uploads/',default='posts/default.jpg')
image_caption = models.CharField(max_length=100,default='Photo by Blog')
slug = models.SlugField(max_length=250,unique_for_date='publish')
publish = models.DateTimeField(default=timezone.Now)
author = models.ForeignKey(
User,related_name='blog_posts')
content = models.TextField()
status = models.CharField(
max_length=10,choices=options,default='published')
favourites = models.ManyToManyField(
User,related_name='favourite',default=None,blank=True)
likes = models.ManyToManyField(
User,related_name='like',blank=True)
like_count = models.BigIntegerField(default='0')
views = models.PositiveIntegerField(default=0)
thumbsup = models.IntegerField(default='0')
thumbsdown = models.IntegerField(default='0')
thumbs = models.ManyToManyField(User,related_name='thumbs',blank=True)
objects = models.Manager() # default manager
newmanager = NewManager() # custom manager
def get_absolute_url(self):
return reverse('blog:post_single',args=[self.slug])
class Meta:
ordering = ('-publish',)
def __str__(self):
return self.title
#views
def post_single(request,post):
post = get_object_or_404(Post,slug=post,status='published')
postcat = Post.objects.filter(category=post.category)
fav = bool
if post.favourites.filter(id=request.user.id).exists():
fav = True
allcomments = post.comments.filter(status=True)
page = request.GET.get('page',1)
paginator = Paginator(allcomments,10)
try:
comments = paginator.page(page)
except PageNotAnInteger:
comments = paginator.page(1)
except EmptyPage:
comments = paginator.page(paginator.num_pages)
user_comment = None
if request.method == 'POST':
comment_form = NewCommentForm(request.POST)
if comment_form.is_valid():
user_comment = comment_form.save(commit=False)
user_comment.post = post
user_comment.save()
return HttpResponseRedirect('/' + post.slug)
else:
comment_form = NewCommentForm()
session_key = 'view_post_{}'.format(post)
if not request.session.get(session_key,False):
post.views +=1
post.save()
request.session[session_key] = True
return render(request,'blog/single.html',{'post': post,'Category': Category.objects.all(),'Category2': postcat,'comments': user_comment,'comments': comments,'comment_form': comment_form,'allcomments': allcomments,'fav': fav})
博客/single.html
{{ node.name }}
我想在我的单个帖子信息 (post_single) 面包屑中添加类别。像这样:类别 > 子类别 > 子子类别 .,
有人告诉我使用 get_ancestors:
示例:
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/">?</a></li>
{% for node in post.category.ancestors %}
<li class="breadcrumb-item"><a href="{{node.get_absolute_url}}">{{node.name}}</a></li>
{% endfor %}
<li class="breadcrumb-item active" aria-current="page">{{ object }}</li>
</ol>
</nav>
{{ post.category }} 如何用我的模型实现这一点?
谢谢。我将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。