码迷,mamicode.com
首页 > 其他好文 > 详细

6 功能4:文章详情页

时间:2018-08-05 00:34:08      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:rar   for   html   分享图片   lis   strong   png   nbsp   creat   

1、文章详情页的设计

技术分享图片

    # 文章详情页
    re_path(r‘^(?P<username>\w+)/articles/(?P<article_id>\d+)$‘, views.article_detail, name=‘article_detail‘),

 

 

 

2、文章详情页的数据构建

def article_detail(request, username, article_id):
    """文章详情页"""

    user_obj = models.UserInfo.objects.filter(username=username).first()
    blog = user_obj.blog        # 查询当前站点对象
    article_list = models.Article.objects.filter(user=user_obj)
    cate_list = models.Category.objects.filter(blog=blog).values(‘pk‘).annotate(c=Count("article__title")).values_list("title", ‘c‘)
    tag_list = models.Tag.objects.filter(blog=blog).values(‘pk‘).annotate(c=Count(‘article‘)).values_list(‘title‘,‘c‘)
    date_list = models.Article.objects.filter(user=user_obj).extra(select={‘y_m_date‘:"date_format(create_time,‘%%Y-%%m‘)"}).values(‘y_m_date‘).annotate(c=Count(‘nid‘)).values_list(‘y_m_date‘, ‘c‘)

    return render(request,‘blog/article_detail.html‘,{"username":username,‘blog‘:blog,‘article_list‘:article_list,"tag_list":tag_list,"date_list":date_list, "cate_list":cate_list})

技术分享图片

1、解决复用问题:方式1:封装函数

技术分享图片

 

3、解决复用问题:方式2:inclution_tag  自定义tag

1、自定义的simple_tag

 技术分享图片技术分享图片技术分享图片技术分享图片

 

2.inclution_tag 

技术分享图片技术分享图片技术分享图片

技术分享图片技术分享图片

 技术分享图片技术分享图片

 

# -*- coding: utf-8 -*-
# @Time    : 2018/08/04 0004 22:03
# @Author  : Venicid

from django import template
from django.db.models import Count
from blog import models

register = template.Library()


@register.simple_tag
def multi_tag(x,y):

    return x*y


@register.inclusion_tag("blog/classification.html")
def get_classification_style(username):

    user_obj = models.UserInfo.objects.filter(username=username).first()
    blog = user_obj.blog
    cate_list = models.Category.objects.filter(blog=blog).values(‘pk‘).annotate(c=Count("article__title")).values_list("title", ‘c‘)
    tag_list = models.Tag.objects.filter(blog=blog).values(‘pk‘).annotate(c=Count(‘article‘)).values_list(‘title‘,‘c‘)
    date_list = models.Article.objects.filter(user=user_obj).extra(select={‘y_m_date‘:"date_format(create_time,‘%%Y-%%m‘)"}).values(‘y_m_date‘).annotate(c=Count(‘nid‘)).values_list(‘y_m_date‘, ‘c‘)

    return {‘blog‘:blog,"tag_list":tag_list,"date_list":date_list, "cate_list":cate_list}

 

 

4、标签字符串转义

def article_detail(request, username, article_id):
    """文章详情页"""
    user_obj = models.UserInfo.objects.filter(username=username).first()
    blog = user_obj.blog
    # article_id对应的文章
    article_obj = models.Article.objects.filter(pk=article_id).first()

    return render(request,‘blog/article_detail.html‘,locals())

 

技术分享图片技术分享图片

技术分享图片

1、字符串转义

 

技术分享图片技术分享图片

 

 技术分享图片技术分享图片

 

2、防止xss攻击

 

技术分享图片技术分享图片

 

 

 

 

4

 

5

 

6

 

7

8

9

 

  

6 功能4:文章详情页

标签:rar   for   html   分享图片   lis   strong   png   nbsp   creat   

原文地址:https://www.cnblogs.com/venicid/p/9420513.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!