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. ITDB系统搭建及实时备份

    ITDB系统搭建及实时备份 ITDB简介 ITDB一款来自希腊的开源IT资产管理系统,它是基于Web的IT资产信息管理系统.对于那些IT设备较多而又缺少管理IT资产信息工具的公司,ITDB是一个不错的 ...

  2. Jquery学习笔记(2)--五角星评分

    网购五星评分模拟: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  3. linux命令之高级使用 service

    service命令,顾名思义,就是用于管理Linux操作系统中服务的命令. 1. 声明:这个命令不是在所有的linux发行版本中都有.主要是在redhat.fedora.mandriva和centos ...

  4. linux学习笔记29---命令watch

    watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...

  5. linux学习笔记3--命令pwd

    Linux中用 pwd 命令来查看”当前工作目录“的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置. ...

  6. 在Linux下搭建git服务器

    http://www.cnblogs.com/dee0912/p/5815267.html 步骤很详细,很受用

  7. TCP编程,Socket通讯

    网络编程分两种,一种是TCP编程,还有一种是UDP编程(点击打开链接).而本文先讲述简单的TCP编程,Socket套接字连接通讯,实现简单的client与server之间的信息传输. 以下是clien ...

  8. Iptables详解+实例

    Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能.如果 Linux 系统连接到因特网或 LAN.服务器或连接 LAN 和因特网的代理 ...

  9. C++ 类的多态四(虚析构函数的重要性)

    //虚析构函数的重要性 #include<iostream> using namespace std; /* 虚析构函数 主要用在多态中,用来释放子类对象内存空间,如果不使用虚析构函数, ...

  10. SQLServer2008设置开启远程连接

    SQL Server 2008默认是不允许远程连接的,sa帐户默认禁用的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,需要做两个部分的配置:    1,SQL Serve ...