Django 项目试炼blog(5) -- 个人站点的搭建
urls
# 个人站点url 一个试图实现http://127.0.0.1:8000/xjj/cate/xjj的mysql/ 与 http://127.0.0.1:8000/xjj/ 的跳转re_path(r'^(?P<username>\w+)/$',views.per_site),re_path(r'^(?P<username>\w+)/(?P<style>tag|cate|date)/(?P<info>.*)/$',views.per_site),
有名分组?P<>,将参数转变为实参,per_site(request,username), per_site(request,username,“tag|cate|date”,info)。
re_path中一个()即为一个参数
views(功能实现面板信息跳转对应的文章,与默认页面全部文章显示)
from django.db.models import Count
def per_site(request,username,**kwargs):res = UserInfo.objects.filter(username=username).first()if res:# http: // 127.0.0.1: 8000 / zzw / cate / python /if kwargs:style = kwargs['style']info = kwargs['info']if style == 'cate':art_list = Article.objects.filter(user_id=res.pk).filter(category__title=info)elif style == 'tag':art_list = Article.objects.filter(user_id=res.pk).filter(tag__title=info)else:# 调整时区 settings USE_TZ = Falseyear,month = info.split('-')print(year,month)art_list = Article.objects.filter(user_id=res.pk).filter(create_time__year=year,create_time__month=month)print(art_list)else:art_list = Article.objects.filter(user_id=res.pk) # 显示站点内的所有文章# 显示站点内每个分类对应的文章数cate_list = Category.objects.filter(blog_id=res.pk).annotate(c=Count('article__category_id')).values('title','c')# 显示站点内每个分类对应的文章数tag_list = Tag.objects.filter(blog_id=res.pk).annotate(c=Count('article2tag__tag_id')).values('title','c')#显示每月的博客数date_list = Article.objects.filter(user_id=res.pk).extra({'date':"date_format(create_time,'%%Y-%%m')"}).values('date').annotate(c=Count('nid')).values('date','c')return render(request,'per_site.html',locals())else:return render(request,'no_user.html')
为了避免再开一条路由,巧妙利用**kwargs(如果没有参数,就正常执行,有参数即按字典传入函数,{'style':‘cate’,'info':xxx})
ORM中extra自建sql语句的用法
前端:略
<div class="col-md-9"><h4>文章摘要</h4>{% for art in art_list %}<div><a href="" ><span>{{ art.title }}</span></a><p >{{ art.desc }}</p><p class="pull-right " ><span>{{ art.create_time|date:'Y-m-d H:m' }}</span> #过滤器的使用<span>{{ art.user.username }}</span></p></div><hr style="clear: both">{% endfor %}
重点:
1、ORM中的跨表查询
正向查询:关联属性(放在‘多’一方)在A表中 A-->B 正向按字段(models—class中生成的关联字段)
反向查询:B-->A 反向按表名小写
2、在过滤时间时,注意setting中的市区设置 USE-TZ = Flase
3、extra 在ORM中自定义mysql中的搜索方式date_formart
4、路由re_path正则匹配
转载于:https://www.cnblogs.com/zhuzhiwei-2019/p/10754131.html
Django 项目试炼blog(5) -- 个人站点的搭建相关推荐
- Django 项目试炼blog(10) --补充 滑动验证码
首先安装一个需要用到的模块 pip install social-auth-app-django 安装完后在终端输入pip list会看到 social-auth-app-django 3.1.0 s ...
- linux下使用nohup挂后台启动django项目
django在linux上运行,一般在xshell远程连接后,是通过如下命令启动服务: python manage.py runserver 0.0.0.0:8000 但是这样有个弊端,窗口关闭服务就 ...
- pyCharm 社区版搭建Django项目环境
pyCharm 社区版搭建Django项目环境 文章目录 pyCharm 社区版搭建Django项目环境 前言 1.安装Django 2.创建Django Demo 项目 3. 创建应用: 4.启动 ...
- centos7根据端口查进程_记录一次CentOs7下Nginx+WSGI部署Django项目(超详细)
记录一次Django部署的文章,不是很熟悉Linux系统,踩了不少坑,本篇文章相当于是一个总结,我会在本文中详细介绍,部署单个Django项目和多个Django的方法,如读者有更好的方法,欢迎留言一起 ...
- python django开发工具_利用pyCharm编辑器创建Django项目开发环境-python开发工具第一篇...
[前置说明] 1.django环境与python对应关系: Django version Python versions 1.11 2.7, 3.4, 3.5, 3.6, 3.7 (added in ...
- Django项目开发——002架构梳理
python三个开发框架: django tornado flask MVC #开源高级web开发框架,使用python #快速开发: ORM 构建数据库,方法简洁. #内置应用:admin,auth ...
- Django入门-2:创建第一个Django项目
创建Django项目 命令 django-admin startproject test1 打开 Linux 或 MacOS 的 Terminal (终端)直接在 终端中输入这些命令(不是 pytho ...
- 前端Vue+后端Django项目创建以及自动部署流程
所有的环境都安装完了之后,接下来就要创建项目了,完整的项目开发流程是由开发的同学先写完代码,然后交付给运维的同学部署到测试和生产环境.DevOps可以让整个流程自动化,开发的同学只需要稍微会一些工具就 ...
- 使用pytest对django项目单元测试
2019独角兽企业重金招聘Python工程师标准>>> 背景 使用django开发了个人博客,欲单元测试,后遍寻网络,然相关资料甚少,遂成此文,望对汝有所助 环境 pytest py ...
- 创建Django项目和模型(创建工程、子应用、设置pycharm环境、使用Django进行数据库开发的步骤)
1.创建Django项目 文档:Writing your first Django app, part 1 | Django documentation | Django 步骤 创建Django项目 ...
最新文章
- 求1-10000所有的素数
- android网页打开摄像头,在android上,用WEB页面打开手机摄像头
- 深度学习(二)theano学习笔记(1)环境搭建
- Access导入MDB文件
- Equipment download scenario2
- RAID冗余技术的介绍AND实现
- 洛谷P4718 【模板】Pollard-Rho算法
- java 不执行构造函数_函数作为构造函数执行,但不作为函数执行
- 考前建议:好好看一下 《网络工程师考试案例动手实验营》附录A
- 机器学习笔记八之机器学习系统设计
- 定义一个空切片_全面解读Python高级特性切片
- VBA 自动关闭 弹出的对话框 + VBA错误捕捉
- Switch离线升级教程【自用】
- Skype、MSN/Live Messenger、Lync全面整合
- php 双竖线,范数介绍,数字两边双竖线
- CSDN周赛52期及53期浅析
- html5实现canvas迷宫游戏,HTML5/Canvas/JS 迷宫生成动画
- C++算法之归并排序
- STM32F4+DP83848以太网通信指南系列(一):知识储备
- python全栈学习笔记
热门文章
- gtk_init参数传递过程(草稿)
- 连范例都不跑,大哥你怎么知道你的代码正确?
- 博客访问量,有没有可能是系统所为?
- LINUX下载编译ccrtp(未成功)
- java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
- 编译OpenJDK12:freetypeScaler.obj error LINK2019 无法解析的外部符号
- centos 卸载docker_Docker (一) 安装
- windows 内核对象核心知识点
- linux通过yum安装vim,linux/centos系统如何使用yum安装vi/vim?(转)
- python4.2_python4.2参数传入