Django之通过tag推荐文章
2016-04-20 10:16
639 查看
#路由 views.py
html:
def post_detail(request,year,month,day,post): ''' 文章详情 + 评论详情 :param request: :param year:文章发布的年份 :param month:文章发布的月份 :param day:文章发布day :param post:文章标题 :return:匹配的具体对象 ''' post=get_object_or_404(Post,title=post) #post.comments 的来源 ==> related_name='comments' comments=post.comments.filter(active=True) new_comment=None if request.method=='POST': comment_form=CommentForm(data=request.POST) if comment_form.is_valid(): #不会存入数据库 new_comment=comment_form.save(commit=False) new_comment.post=post new_comment.save() else: comment_form=CommentForm() # 列出相似的文章 #获取文章post的标签 post_tags_ids = post.tags.values_list('id', flat=True) #过滤其他的文章排除本事 similar_posts = Post.published.filter(tags__in=post_tags_ids).exclude(id=post.id) # similar_posts = similar_posts.annotate(same_tags=Count('tags')).order_by('-same_tags', '-publish')[:4] return render(request,'myblog/post/detail.html',{'post':post, 'comments': comments, 'comment_form':comment_form, 'new_comment':new_comment, 'similar_posts': similar_posts })
html:
<!-- 推荐类似文章 --> <h2>相似文章</h2> {% for post in similar_posts %} <p> <a href="{{ post.get_absolute_url }}">{{ post.title }}</a> </p> {% empty %} 没有类似的文章。 {% endfor %}
相关文章推荐
- BAPI for goods receipt for subcontracting PO
- Django之tag的使用
- Google推荐的图片加载库Glide介绍
- Django初学笔记1.
- [HDU 5512][2015ACM/ICPC亚洲区沈阳站] Pagodas 博弈论
- BZOJ 4510|USACO 2016 Jan Gold|Ratio Contact|动态规划
- Fibonacci 矩阵快速幂
- Django 异常解决
- Django初识
- google hash table ------稀疏hash表之sparse hashtable
- django 链接地址匹配流程
- 在浏览器中输入Google.com并且按下回车之后发生了什么?
- 1003,1004,1005 Hangover,财务管理,I Think I Need a Houseboat
- BZOJ 4509 USACO 2016 Jan Gold Angry Cows
- django post_save post_delete
- django views test
- Digogo ugdx文件的制作
- Digogo ugdx文件的制作
- go语言scan空值报错
- NYOJ 30 Gone Fishing(贪心)(个人理解笔记)