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的理解 在进入正文之 ...
随机推荐
- 解决:eclipse配置Database Connections报错Communications link failure Last packet sent to the server was 0 ms ago
网上各式各样的问题,不过我的问题在于我开了Proxifier,导致链接localhost的时候被拦截...把Proxifier关了就好了 以后遇到这种问题.连不上数据库啊,连不上本地的服务器啊,先检查 ...
- Android 开发 -------- 自己定义View 画 五子棋
自己定义View 实现 五子棋 配图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG92ZV9KYXZjX3lvdQ==/font/5a6L5L2T ...
- Model Binding is not working. MVC3 视图模型绑定不成功
问题出现在POST方法中,当我要将数据提交到后台的时候,绑定的变量值为null 原因是视图中的名称跟Controller中的视图的名称不一致造成的. 假如你视图中的Model采用的是Html.Labe ...
- Servlet -doGet() doPost()原理
一.自定义类只需要重写doGet(HttpServletRequest request, HttpServletResponse response) 和doPost(HttpServletReques ...
- 《Netty in action》目录修复版本分享
最近阅读了Netty in action一书.深感外国友人的书籍编写能力强大.作者由简入深.精简描述了Netty的相关知识,如何使用等等. 本来想翻译一下的.尝试着翻译了一点之后.发现非常痛苦啊.ps ...
- PHP——smarty模板(第一天)
smarty.class.php 主要的东西放在类里面templates 放模板templates_c 放缓存 类里面 $smarty->assign("author",&q ...
- linux2.4中netfilter_nat_alg机制分析--以FTP流程为例,分析NAT和ALG
以FTP流程为例,分析NAT和ALG 网络环境: ×5+6=1286) 创建×5+6=1286),更新skb的应用层信息(这里应用层信息还是×5+6=1286) 创建×5+6=1286) 创建×5+6 ...
- gibhub上搭建个人静态网站介绍
之前学习过git的基本命令.今天介绍一下github上搭建个人网站的步骤. 在window系统上搭建gibhub个人网站(只能执行html.css和js文件),这就是纯静态页面. 步骤一:注册gith ...
- DevExpress 控件使用技巧
DevExpress是非常主流的.NET控件,眼下全世界和中国都用非常多用户使用,只是因为是英文版,初次接触的同学可能会认为困难.这里就总结DevExpress常见的10个使用技巧. 1.TextEd ...
- _beginthreadex创建线程,立即执行?
一个线程创建后,并不是立马就执行,而是等时间片到来后才执行... C++ Code 12345678910111213141516171819202122232425262728293031323 ...