django 个人博客系统开发 - 代码重构 聚合查询
来源:互联网 发布:html编程软件 编辑:程序博客网 时间:2024/04/25 14:02
*视图函数重构
def global_setting(request): SITE_NAME = settings.SITE_NAME WEIBO_SINA = settings.WEIBO_SINA categories = Cateory.objects.all() archives = Article.objects.distinct_date() return locals()
定义通用函数
def paging_articles(request, articles): paginator = Paginator(articles, 2) try: page = int(request.GET.get('page', 1)) articles = paginator.page(page) except PageNotAnInteger: articles = paginator.page(1) except EmptyPage: articles = paginator.page(paginator.num_pages) return articles
def index(request): try: articles = Article.objects.all() articles = paging_articles(request, articles) except Exception as e: print(e) logger.error(e) return render(request, 'index.html', locals())
*重构urls
urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'', include('blog.urls')),# url(r'^admin/upload/(?P<dir_name>[^/]+)$', upload_image, name='upload_image'),]#...
blog.urls
from django.conf.urls import urlfrom .views import *urlpatterns = [ url(r'^$', index , name='index'), url(r'^archive/$', archive, name = 'archive'),]
*模板的重构
提取分页的公用部分为 pagination.html
修改以支持归档视图的分页
{% load staticfiles %}<div> <ui> {% if articles.has_previous %} <li><a href="?page={{ articles.previous_page_number }}{% if request.GET.year %}&year={{ request.GET.year }}{% endif %}{% if request.GET.month %}&month={{ request.GET.month }}{% endif %}">«上一页</a></li> {% else %} <li>«上一页</li> {% endif %} <li>{{ articles.number }}/{{ articles.paginator.num_pages }}</li> {% if articles.has_next %} <li><a href="?page={{ articles.next_page_number }}{% if request.GET.year %}&year={{ request.GET.year }}{% endif %}{% if request.GET.month %}&month={{ request.GET.month }}{% endif %}">下一页»</a></li> {% else %} <li>下一页»</li> {% endif %} </ui></div>
*聚合查询 按评论排行的实现
https://docs.djangoproject.com/en/1.9/topics/db/aggregation/
from django.db.models import Count...def global_setting(request): SITE_NAME = settings.SITE_NAME WEIBO_SINA = settings.WEIBO_SINA categories = Cateory.objects.all() archives = Article.objects.distinct_date() hotArticles = Article.objects.annotate(num_comments=Count('comment')).order_by('-num_comments')[:5]#聚合查询 return locals()
0 0
- django 个人博客系统开发 - 代码重构 聚合查询
- django 个人博客系统开发 - 开发流程
- django 个人博客系统开发 - 重点 难点
- django 个人博客系统开发 - 项目搭建
- django 个人博客系统开发 - admin
- django 个人博客系统开发 - 图片上传
- django 个人博客系统开发 - 文章归档
- django 个人博客系统开发 - 评论
- django 个人博客系统开发 - 数据库设计与django Model
- Django个人博客开发
- django 个人博客系统开发 - 富文本编辑器
- django 个人博客系统开发 - 最新文章获取和分页
- django 个人博客系统开发 - 文章页面和自定义过滤器
- django 个人博客系统开发 - 注册 登录 注销
- Django的聚合查询
- django 个人博客系统开发 - 日志器 基本信息的全局使用
- 个人博客系统的开发
- Django个人博客
- 使用ScrollView实现上下联动(标题栏与内容)
- 知道这20个正则表达式,能让你少写1,000行代码
- Java 线程安全
- js根据经纬度和时间计算出月初月落时间
- man
- django 个人博客系统开发 - 代码重构 聚合查询
- Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.Generi
- vmware下linux上网
- export命令
- EasyUI学习总结(四)——parser源码分析
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(二)——领域模型
- 学习计划
- Hashset迭代器的使用
- 去除字符串中的某个字符