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的理解 在进入正文之 ...
随机推荐
- 分页技术框架(Pager-taglib)学习一(页面分页)
一.Pager-taglib简介 1.Pager-taglib,支持多种风格的分页显示.实际上她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多 ...
- gpg: symbol lookup error
今天使用sudo apt-get 安装包的时候,出现gpg错误,如下: gpg: symbol lookup error: /usr/local/lib/libreadline.so.6: undef ...
- PHP命名空间规则解析及高级功能3
PHP命名空间规则解析及高级功能 -- : 来源:中国站长站综合 编辑:水色皇朝[纠错]1人评论 A-A+ 怎么开淘宝店 网站优化方法 创业如何获得投资 怎么做微商 最新LOL活动 日前发布的PHP ...
- Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Security policy requir
今天升级Xcode 7.0 bata发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport S ...
- iOS开发多线程篇 03 —线程安全
iOS开发多线程篇—线程安全 一.多线程的安全隐患 资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块 ...
- 使用java语言如何更好的使用多线程?
① 高并发.任务执行时间短的业务,线程池线程数可以设置为CPU核数+1,减少线程上下文的切换. ② 并发不高.任务执行时间长的业务要区分开看: 假如是业务时间长集中在I/O操作上,也就是I/O密集型的 ...
- 【转载】【Pycharm编辑器破解步骤】之idea和Pycharm 等系列产品激活激活方法和激活码(附:Mac系统)
感谢:雪中皓月的<idea和Pycharm 等系列产品激活激活方法和激活码> 第一种方法:使用现有的注册服务器 优点:快捷,方便,省事 缺点:经常被封杀,可能会面临经常激活的困扰 Lice ...
- Windows 动态库创建和使用 part 2
一.Windows动态库的创建: 1.先选择 "DLL" 和 “控项目” 2.添加一个头文件,一个源文件 CppDll.h,CppDll.cpp,一个模块定义文件 CppDll. ...
- python文件的编译
背景知识 pyc文件: .pyc 是一种二进制文件,是由 .py 文件经过编译后,生成一种byte code文件. .py 文件变成 .pyc 文件后,加载的速度有所提高,而且 .pyc 是一种跨平台 ...
- 【Cloud Foundry】Cloud Foundry学习(四)——Service
在阅读的过程中有不论什么问题,欢迎一起交流 邮箱:1494713801@qq.com QQ:1494713801 Services:Cloud Foundry的Service模块从源码控制上看就 ...