码迷,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
迷上了代码!