zoukankan      html  css  js  c++  java
  • Django之通过tag推荐文章

    #路由 views.py

    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 %}
    

     

  • 相关阅读:
    在HTML中使用JavaScript
    七层网络模型
    JS执行机制
    继承
    变量作用域
    跨域
    ES6-Promise
    回调函数
    2019.3.9笔试
    CSS3新特性
  • 原文地址:https://www.cnblogs.com/similarface/p/5411472.html
Copyright © 2011-2022 走看看