django--个人主页建立练习
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--个人主页建立练习的更多相关文章
- [Django]中建立数据库视图
Django中建立数据库视图 Django中没有建立视图的接口.假设要建立一个视图须要一些手动的改变. 这里使用的Django 版本号>1.5, 使用的数据库为mysql 第一步 建立视图,比如 ...
- django models 建立好后,table也创建成功了,为什么网页后台不显示的问题
刚学,遇到这个问题,所以向大神请教,大神给了两个词,admin ,register.感觉像被雷击中了一样,原来忘记了,注册(register) 解决方法就是:在admin.py中对你的model进行注 ...
- 一、搭建Django,建立第一个demo
一. 1.安装好Python(我用的最新版2.7.15),配置环境变量,并且安装好对应的Django版本(pip install django),在Python安装目录下的Scropts下会多出dja ...
- pycharm下虚拟环境建立,django项目建立等情况说明
- Django 学习笔记之六 建立一个简单的博客应用程序
最近在学习django时建立了一个简单的博客应用程序,现在把简单的步骤说一下.本人的用的版本是python 2.7.3和django 1.10.3,Windows10系统 1.首先通过命令建立项目和a ...
- Django建立helloworld自定义页面
目录介绍 按照上一篇初学Django首先建立起一个默认站点,生成如下的目录结构: manage.py 一种命令行工具,允许你以多种方式与该 Django 项目进行交互. 键入python manage ...
- Django配合MySQL学习Django模型外键的建立和使用
Django 模型建立外键 在模型中建立外键是很简单的,基本操作如下 class Table(models.Model) column_name = models.ForeignKey(other-T ...
- django一对多、多对多模型、自关联的建立
# 原创,转载请留言联系 一对多模型 一对多的关系,例如员工跟部门.一个部门有多个员工.那么在django怎么建立这种表关系呢? 其实就是利用外键,在多的一方,字段指定外键即可.例如员工和部门,员工是 ...
- pycharm建立第一个django工程-----windows中
pycharm建立第一个django工程 系统:win764 ip: 192.168.0.100 安装django pip install django 左上角建立一个名为Firstdjango工程 ...
- [diango]理解django视图工作原理
前言:正确理解django视图view,模型model,模板的概念及其之间的关联关系,才能快速学习并上手使用django制作网页 本文主要讲解自己在学习django后对视图view的理解 在进入正文之 ...
随机推荐
- 文件上传之 MultipartFile
利用MultipartFile(组件)实现文件上传 在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的Mult ...
- windows下安装C语言环境
安装 1.下载 min-gw 安装程序,链接为:http://sourceforge.net/projects/mingw/files/,下载 Download mingw-get-setup.exe ...
- 将json形式的时间字符串转换成正常的形式
//重写time的getter方法 //判断addtime和当期的时间差 // < 60分钟 返回 n分钟前 // > 60分钟 返回 n小时前 //超过24小时 返回 -月-日 - ...
- dirname(__FILE__) 的使用总结 2(转)
比如当前文件是放在(d:\www\)下,文件名是test.php. 测试的代码如下: 复制代码 代码如下: <?php echo __FILE__ ; // 取得当前文件的绝对地址,结果:D:\ ...
- Flex桌面AIR软件日志添加
日志包装类 package log { import com.adobe.air.logging.FileTarget; import flash.filesystem.File; import fl ...
- 火狐调试js
alert("123"); //警告框显示 console.log(json); //火狐控制台显示
- 第二百一十三节,jQuery EasyUI,NumberBox(数值输入框)组件
jQuery EasyUI,NumberBox(数值输入框)组件 功能:只能输入数值,和各种数值的计算 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI ...
- 描述J2EE框架的多层结构,并简要说明各层的作用。
描述J2EE框架的多层结构,并简要说明各层的作用. 解答: 1) Presentation layer(表示层) a. 表示逻辑(生成界面代码) b. 接收请求 c. 处理业务层抛出的异常 d. 负责 ...
- 补图BFS(hdu 5876)
题目大意: 给出一个图和起点S,求补图中S到其他点的最短距离. http://acm.hdu.edu.cn/showproblem.php?pid=5876 我自己的垃圾做法: 用线段树来维护dijk ...
- cocos2dx lua 3.10 使用cjson
本篇介绍如何在lua中使用cjson对数据进行json的encode与decode,首先简单介绍下cjson: Lua CJSON 是 Lua 语言提供高性能的 JSON 解析器和编码器,其性能比纯 ...