中山做网站比较好,航空公司网页设计,想搞一个自己的网站怎么做,公司百度推广一年多少钱当博客文章实现了标签后#xff0c;可以用它们做很多有趣的事情。关于标签的更多内容#xff0c;请看
Django集成第三方标签功能-CSDN博客
使用标签#xff0c;我们可以很好地对博客文章进行分类。类似主题的帖子会有几个共同的标签。下一步将构建一个功能#xff0c;以显…当博客文章实现了标签后可以用它们做很多有趣的事情。关于标签的更多内容请看
Django集成第三方标签功能-CSDN博客
使用标签我们可以很好地对博客文章进行分类。类似主题的帖子会有几个共同的标签。下一步将构建一个功能以显示类似的帖子的标签数量。当用户阅读一篇文章时我们可以建议他们阅读其他标签相同的文章。
为了检索特定职位的类似职位需要执行以下步骤:、
检索当前文章的所有标签
blog/views.py
from django.db.models import Count 这是Django ORM的Count聚合函数。这个函数将允许执行标记的聚合计数。 Django.db.models包含以下聚合函数: Avg:平均值 Max:最大值 Min:最小值 Count:对象计数 关于聚合函数可查看官方文档 https://docs.djangoproject.com/zh-hans/5.0/topics/db/aggregation/ 在render()函数之前的post_detail视图中添加以下行:
post_tags_ids post.tags.values_list(id, flatTrue)
例如当前文章有两个标签 {id:1,value:python}{id:2,value:django}使用tags.values_list获取标签的id列表返回一个元组(1,2) 将flatTrue传递给它以获得像[1,2,3…]这样的扁平列表。 获取所有贴有这些标签的帖子 从列表中排除当前的帖子以避免推荐相同的帖子
similar_posts Post.published.filter(tags__inpost_tags_ids).exclude(idpost.id)
关于Post.published是在模型中自定义的一个返回已发布信息的方法更多内容请查看
Django定制模型管理器-CSDN博客
按与当前帖子共享的标签数量对结果排序 如果有两个或更多的帖子具有相同数量的标签推荐最近的帖子 将查询限制为我们想要推荐的帖子数量
similar_posts similar_posts.annotate(same_tagsCount(tags)).order_by(-same_tags,-publish)[:4]
将similar_posts对象添加到render()函数的上下文字典中 template blog/post/detail.htmlcontext {post:post,comments:comments,new_comment:new_comment,comment_form:comment_form,similar_posts:similar_posts}return render(request,template,context)
关于comment功能请查看Django评论系统-CSDN博客
编辑blog/post/detail.html模板并在帖子评论列表之前添加以下代码 {% for post in similar_posts %}pa href{{ post.get_absolute_url }}{{ post.title }}/a/p{% empty %}There are no similar posts yeet.{% endfor %}
关于get_absolute_url是在模型中自定义的使用日期为路径的方法更多内容请看
Django用日期URL定位详情-CSDN博客