1.前端页面采用模板继承与动态模板

{% extends 'base.html' %}
{% block content %}
{% for article in article_list %}
<div class="media">
<div class="media-left media-middle">
<a href="#">
<img class="media-object" src="/media/{{ article.blog.userinfo.avatar }}" alt="..." width="64"
height="64">
</a>
</div>
<div class="media-body">
<h4 class="media-heading"><a href="/{{ article.blog.userinfo.username }}/{{ article.nid }}">{{ article.title }}</a></h4>
{{ article.desc }}
<div style="margin-top: 10px " class="article_bottom">
<span><a href="/{{ article.blog.userinfo.username }}/">{{ article.blog.userinfo.username }}</a></span>
<span>posted @ {{ article.create_time | date:'Y-m-d H:i:s' }}</span>
<span class="glyphicon glyphicon-comment"><a
href="">-评论({{ article.commit_num }})</a></span>
<span class="glyphicon glyphicon-thumbs-up"><a href="">-点赞({{ article.up_num }})</a></span>
</div>
</div>
</div>
<hr>
{% endfor %}
{% endblock %}

2.其中在个人页面中要要有图片及头像显示

  在注册时我们存入数据苦事存储的头像的信息只是我们的文件的名字信息:

  

  因此图片的文件将存在在我们的静态文件avatar下,开始的默认的头像为default中静态文件中的默认图片

  在使用前端页面需要头像时需要在路由中为存放头像的文件夹开一个路由,以及为存放图片的文件夹配置静态文件夹:

  

  路由:

  

  项目文件夹:

  

3.在个人页面的展示中,后台主要做的就是将前端需要展示的数据提供给他,用到的就是数据库的查询:

def user_blog(request, username, *args, **kwargs):
user = models.UserInfo.objects.filter(username=username).first()
if not user:
return redirect('/error/')
blog = user.blog
article_list = user.blog.article_set.all()
condition = kwargs.get('condition')
param = kwargs.get('param')
if 'tag' == condition:
article_list = article_list.filter(tag__pk=param)
elif 'category' == condition:
article_list = article_list.filter(category__pk=param)
elif 'archive' == condition:
archive_list = param.split('-')
print('&&&&&&&&&&&&&&', archive_list)
article_list = article_list.filter(create_time__year=archive_list[0], create_time__month=archive_list[1])
  
# tag_list = models.Tag.objects.all().filter(blog=blog).annotate(coun=Count('article__title')).values_list('title', coun) 'coun')
#主要运用分组查询:
# category_num = models.Category.objects.all().filter(blog=blog).annotate(coun=Count('article__title')).values_list(
# 'title', 'coun')
#下面这条很重要,用的是按日期归档,既哪一年的哪个月写了哪些文章:
# from django.db.models.functions import TruncMonth
# y_m_num = models.Article.objects.all().filter(blog=blog).annotate(y_m=TruncMonth('create_time')).values('y_m').annotate(coun=Count('y_m')).values_list('y_m', 'coun')
#
# print(blog)
print(article_list) return render(request, 'user_blog.html', locals())

3.主要是分组查询的应用:

-查询当前站点下每个分类的文章数
  -总结:filter在前,表示where,values在前,表示group by,
value在后,表示取值,filter在后,表示havaing
  -Category.objects.all().filter(blog=blog).annotate(cout=Count(article__title)).values_list('title','count')
-查询当前站点下每个标签的文章数
  -Tag.objects.all().filter(blog=blog).annotate(cout=Count(article__title)).values_list('title','count')
-归档:查询当前站点每年每月发表的文章数
  -截断函数
  -from django.db.models.functions import TruncMonth -Article.objects.all().filter(blog=blog).annotate(y_m=TruncMonth('create_time')).values('y_m').annotate(cout=Count(y_m)).values_list('y_m','count')

4.动态模板的应用方法:

-inclosion_tag
  -在app下创建一个模块:名字必须叫:templatetags
  -在模块下创建一个py文件:my_tag.py(这个名字随意)
  -my_tag.py下,写方法:
    -from django.template import Library
    register = Library() register名字不能变
    @register.inclusion_tag('classify.html')
    def classify(username):
      eturn 字典
  -使用:
    在模板中:
      -{%load my_tag%}
      -{% classify 传参%}

django--个人主页建立练习的更多相关文章

  1. [Django]中建立数据库视图

    Django中建立数据库视图 Django中没有建立视图的接口.假设要建立一个视图须要一些手动的改变. 这里使用的Django 版本号>1.5, 使用的数据库为mysql 第一步 建立视图,比如 ...

  2. django models 建立好后,table也创建成功了,为什么网页后台不显示的问题

    刚学,遇到这个问题,所以向大神请教,大神给了两个词,admin ,register.感觉像被雷击中了一样,原来忘记了,注册(register) 解决方法就是:在admin.py中对你的model进行注 ...

  3. 一、搭建Django,建立第一个demo

    一. 1.安装好Python(我用的最新版2.7.15),配置环境变量,并且安装好对应的Django版本(pip install django),在Python安装目录下的Scropts下会多出dja ...

  4. pycharm下虚拟环境建立,django项目建立等情况说明

  5. Django 学习笔记之六 建立一个简单的博客应用程序

    最近在学习django时建立了一个简单的博客应用程序,现在把简单的步骤说一下.本人的用的版本是python 2.7.3和django 1.10.3,Windows10系统 1.首先通过命令建立项目和a ...

  6. Django建立helloworld自定义页面

    目录介绍 按照上一篇初学Django首先建立起一个默认站点,生成如下的目录结构: manage.py 一种命令行工具,允许你以多种方式与该 Django 项目进行交互. 键入python manage ...

  7. Django配合MySQL学习Django模型外键的建立和使用

    Django 模型建立外键 在模型中建立外键是很简单的,基本操作如下 class Table(models.Model) column_name = models.ForeignKey(other-T ...

  8. django一对多、多对多模型、自关联的建立

    # 原创,转载请留言联系 一对多模型 一对多的关系,例如员工跟部门.一个部门有多个员工.那么在django怎么建立这种表关系呢? 其实就是利用外键,在多的一方,字段指定外键即可.例如员工和部门,员工是 ...

  9. pycharm建立第一个django工程-----windows中

    pycharm建立第一个django工程 系统:win764 ip: 192.168.0.100 安装django pip install django 左上角建立一个名为Firstdjango工程 ...

  10. [diango]理解django视图工作原理

    前言:正确理解django视图view,模型model,模板的概念及其之间的关联关系,才能快速学习并上手使用django制作网页 本文主要讲解自己在学习django后对视图view的理解 在进入正文之 ...

随机推荐

  1. SVN提交项目时版本冲突解决方案

    版本冲突原因: 假设A.B两个用户都在版本号为7的时候,更新了index.jsp这个文件,A用户在修改完成之后提交index.jsp到服务器,这个时候提交成功,这个时候index.jsp文件的版本号已 ...

  2. CentOS6.2下Qt5.1.0无法输入中文

    因为在程序中需要在界面上输入中文,但是系统是英文系统,没有预装中文输入法,于是从网上搜了一下输入法的安装,但是输入法安装好之后,可以再系统中输入中文,但是却无法再Qt中输入中文,只能继续找解决办法 安 ...

  3. Log4j1.x初识

    初识log4j1.x 研究源码首先要对项目要有整体的认识,这一章节主要让大家对log4j1.x有一个整体的认识,并以此为切入点,认识log4j1.x的真个框架 1 整体认识 先整体上对log4j1有一 ...

  4. deepin linux 下C开发环境配置

    # deepin linux 下C开发环境配置 ## 前言-----------------------------deepin操作系统商店默认提供了 eclipse for c\c++但是系统没有提 ...

  5. @Transactional spring事务无效的解决方案

    关于@Transactional注解 一般都认为要注意以下三点 1 .在需要事务管理的地方加@Transactional 注解.@Transactional 注解可以被应用于接口定义和接口方法.类定义 ...

  6. Ubuntu 12.04下PostgreSQL-9.1安装与配置详解(在线安装) [转]

    说明:       我是用root用户在终端登陆的,如果是非root用户,那在命令前需要加上"sudo",你懂的... 第一步:在Ubuntu下安装Postgresql       ...

  7. Android开发 - 图形化生成的贝塞尔插值器

    基于三次方贝塞尔曲线的插值器 在动画开发过程中,经常需要使用到插值器来满足我们的动画设计需求.然而,官方提供的插值器并不能满足所有的需求,所以我们需要自定义插值器. 下面介绍的三次方贝塞尔曲线的插值器 ...

  8. HDU 2254 奥运(矩阵高速幂+二分等比序列求和)

    HDU 2254 奥运(矩阵高速幂+二分等比序列求和) ACM 题目地址:HDU 2254 奥运 题意:  中问题不解释. 分析:  依据floyd的算法,矩阵的k次方表示这个矩阵走了k步.  所以k ...

  9. mybatis之高级结果映射

    先贴一句官方文档内容 如果世界总是这么简单就好了. 正如官方文档所说:如果一切都是这么简单,那该多好啊,但是实际上,我们面对的是复杂的对象,就是对象里有对象,有列表对象,总之五花八门的对象.这个时候我 ...

  10. 第二百三十五节,Bootstrap栅格系统

    Bootstrap栅格系统 学习要点: 1.移动设备优先 2.布局容器 3.栅格系统 本节课我们主要学习一下 Bootstrap 的栅格系统,提供了一套响应式.移动设备优先的流 式栅格系统. 一.移动 ...