您的位置:首页 > 编程语言 > Go语言

Django之便签生成

2016-04-20 10:28 429 查看
myblog_tag.py

#coding:utf-8

__author__ = 'similarface'
from django import template

register=template.Library()

from  ..models import Post

@register.simple_tag
def total_posts():
'''
文章总数
:return:返回发布的文章总篇数
'''
return Post.published.count()


模版:

{% load blog_tags %}
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<link href="{% static "css/blog.css" %}" rel="stylesheet">
</head>
<body>
<div id="content">
{% block content %}
{% endblock %}
</div>
<div id="siderbar">
<h2>我的博客</h2>
<p>目前已写文章总数 {% total_posts %} .</p>
</div>
</body>
</html>


看下面,哦,还是挺丑的



纳尼 这也太low了

go on add myblog_tag.py here:

@register.inclusion_tag('myblog/post/latest_posts.html')
def show_latest_posts(count=5):
'''
最新count篇文章
:param count: 文章的篇数 默认5篇
:return:最新count篇文章的对象
'''
latest_posts=Post.published.order_by('-publish')[:count]
return {'latest_posts':latest_posts}


#myblog/post/latest_posts.html:


<ul>
{% for post in latest_posts %}
<li>
<a href="{{ post.get_absolute_url }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>


模版修改下:

<div id="siderbar">
<h2>我的博客</h2>
<p>目前已写文章总数 {% total_posts %} .</p>
<h3>最新文章</h3>
 {% show_latest_posts 3 %}
</div>




哦 原来是个🐦。。。

哦 你再改改试试

#coding:utf-8
__author__ = 'similarface'
from django import template
from django.db.models import Count
register=template.Library()
from ..models import Post

@register.simple_tag()
def total_posts():
'''
文章总数
:return:返回发布的文章总篇数
'''
return Post.published.count()

@register.inclusion_tag('myblog/post/latest_posts.html') def show_latest_posts(count=5): ''' 最新count篇文章 :param count: 文章的篇数 默认5篇 :return:最新count篇文章的对象 ''' latest_posts=Post.published.order_by('-publish')[:count] return {'latest_posts':latest_posts}
@register.assignment_tag
def get_most_commented_posts(count=5):
'''
返回评论最多的前count篇文章
:param count:默认为5
:return:返回评论最多的前count篇文章
'''
return Post.published.annotate(total_comments=Count('comments')).order_by('-total_comments')[:count]


模版:

<div id="siderbar">
<h2>我的博客</h2>
<p>目前已写文章总数 {% total_posts %} .</p>
<h3>最新文章</h3>
{% show_latest_posts 3 %}
<h3>最受欢迎的文章</h3>
{% get_most_commented_posts as most_commented_posts %}
<ul>
{% for post in most_commented_posts %}
<li>
<a href="{{ post.get_absoulte_url }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
</div>


尼玛这。。。感觉记不住



程序员多么苦逼,一个Django 的小小功能都这么change
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: