Top

随笔分类 -  Django

摘要:一、django的contenttypes contenttypes是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在django_content_type表中。 每当我们创建了新的model并执行数据库迁移后,django_content_type表中就会自动新 阅读全文
posted @ 2018-12-13 19:50 勇敢的巨蟹座 阅读(228) 评论(0) 推荐(0)
摘要:一、同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。 同源策略,它是由Netscape提出的一个著名的安全策略。 阅读全文
posted @ 2018-12-12 16:22 勇敢的巨蟹座 阅读(372) 评论(0) 推荐(0)
摘要:一、频率组件 1、使用DRF简单频率控制实现对用户进行访问频率控制 1)导入模块,定义频率类并继承SimpleRateThrottle rate代表访问频率,上面表示每分钟五次,get_cache_key是必须存在的,它的返回值告诉当前频率控制组件要使用什么方式区分访问者(比如ip地址)。 2)在视 阅读全文
posted @ 2018-12-11 18:08 勇敢的巨蟹座 阅读(265) 评论(0) 推荐(0)
摘要:一、引入 通过前面三节课的学习,我们已经详细了解了DRF提供的几个重要的工具,DRF充分利用了面向对象编程的思想,对Django的View类进行了继承,并封装了其as_view方法和dispatch方法,随后提供了几个非常方便的编程工具,比如解析器、序列化。 我们通过解析器,可以对来自客户端的app 阅读全文
posted @ 2018-12-10 19:07 勇敢的巨蟹座 阅读(292) 评论(0) 推荐(0)
摘要:一、序列化组件 基于上篇随笔的表结构,通过序列化组件的ModelSerializer设计如下三个接口: urls.py文件: Views.py文件: 二、视图组件引入 前面的介绍中,我们已经通过序列化组件设计除了符合REST规范的五个常用接口,现在假设,我们有多个数据接口,比如(Book,Autho 阅读全文
posted @ 2018-12-07 14:02 勇敢的巨蟹座 阅读(390) 评论(0) 推荐(0)
摘要:一、DRF - 解析器 1、解析器的引出 我们知道,浏览器可以向django服务器发送json格式的数据,此时,django不会帮我们进行解析,只是将发送的原数据保存在request.body中,只有post请求发送urlencoded格式的数据时,django会帮我们将数据解析成字典放到reque 阅读全文
posted @ 2018-12-06 20:14 勇敢的巨蟹座 阅读(780) 评论(0) 推荐(0)
摘要:一、REST 1、什么是编程? 数据结构和算法的结合。 2、什么是REST? 首先回顾我们曾经做过的图书管理系统,我们是这样设计url的,如下: 分析:以上定义的url虽然也可以实现功能,但是因个人命名习惯等的不同,同一个功能会产生五花八门的url,而且响应回去的数据(包括错误提示等)格式也没有统一 阅读全文
posted @ 2018-12-05 19:44 勇敢的巨蟹座 阅读(408) 评论(0) 推荐(1)
摘要:一、中介模型 我们之前学习图书管理系统时,设计了Publish、Book、Author、AuthorDetail这样几张表,其中Book表和Author表是多对多关系,处理类似这样简单的多对多关系时,使用标准的ManyToManyField就可以了。但是,有时你可能需要关联数据到两个模型之间的关系上 阅读全文
posted @ 2018-11-23 20:35 勇敢的巨蟹座 阅读(374) 评论(0) 推荐(0)
摘要:一、模型层的Meta选项详解 Django模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性。使用方法及参数解释如下: 1、app_label 这个选项只在一种情况下使用,就是你的模型类不在默认的应用程序包下的models.py文件中,这时候需要指定你这个模型类是哪个应用程序的 阅读全文
posted @ 2018-11-22 21:26 勇敢的巨蟹座 阅读(253) 评论(0) 推荐(0)
摘要:一、权限分配 需求:为用户分配角色,为角色分配权限,如下图效果: 1、视图代码: 注意:JsonResponse传入一个非字典类型的数据结构时,需要设置safe=False。 2、模板代码 1)显示用户表相关代码 2)显示角色表相关代码 3)显示权限表相关代码 3、思路分析 此需求难点是将权限表渲染 阅读全文
posted @ 2018-11-21 21:40 勇敢的巨蟹座 阅读(664) 评论(0) 推荐(0)
摘要:一、crm项目 需求: 1、批量创建学生学习记录 2、基于modelformset组件实现录入学生成绩 3、实现统计各个销售的成单量(借助highcharts或echarts显示) 二、modelformset组件 常用于批量处理多个form表单。使用示例如下: 1、引入modelformset的工 阅读全文
posted @ 2018-11-20 19:10 勇敢的巨蟹座 阅读(356) 评论(0) 推荐(0)
摘要:一、非菜单权限对应的一级菜单展开 需求:客户列表和账单列表页面中都有添加按钮,当点击添加客户(或编辑客户、删除客户)时,客户列表所属的一级菜单展开,当点击添加账单(或编辑账单、删除账单)时,账单列表所属的一级菜单展开。 1、permission表新增一个pid字段,表示非菜单权限的父级菜单权限id, 阅读全文
posted @ 2018-11-18 19:43 勇敢的巨蟹座 阅读(732) 评论(1) 推荐(1)
摘要:一、queryset Queryset是django中构建的一种数据结构,ORM查询集往往是queryset数据类型,我们来进一步了解一下queryset的特点。 1、可切片 使用Python 的切片语法来限制查询集记录的数目。它等同于SQL 的LIMIT 和OFFSET 子句。 不支持负的索引(例 阅读全文
posted @ 2018-11-16 09:52 勇敢的巨蟹座 阅读(651) 评论(0) 推荐(0)
摘要:一、动态显示二级菜单 上篇随笔中,我们实现了动态显示一级菜单,现在考虑这样一种情况,用户的菜单权限比较多,这个时候全部并列展现在左侧菜单就不合适了,所以,现在有这样一个需求,即把用户的菜单权限分类,划分成二级菜单,动态显示在左侧菜单,解决方案如下: 1、修改权限表结构 (1)分析需求,要求左侧菜单如 阅读全文
posted @ 2018-11-15 21:41 勇敢的巨蟹座 阅读(1147) 评论(0) 推荐(0)
摘要:一、权限组件 1、上篇随笔中,我们只是设计好了权限控制的表结构,有三个模型,五张表,两个多对多关系,并且简单实现了对用户的权限控制,我们会发现那样写有一个问题,就是权限控制写死在了项目中,并且没有实现与我们的业务逻辑解耦,当其他项目要使用权限控制时,要再重复写一遍权限控制的代码,因此我们很有必要将权 阅读全文
posted @ 2018-11-14 18:51 勇敢的巨蟹座 阅读(1502) 评论(1) 推荐(0)
摘要:一、权限表结构设计 1、认识权限 生活中处处有权限,比如,腾讯视频开会员才有观看某个最新电影的权限,你有房间钥匙就有了进入这个房间的权限,等等。同样,程序开发过程中也有权限,我们今天说的权限指的是web网站权限,对于不同用户访问web服务时应该有不同的功能,如,一个公司有CEO、销售主管、销售等等, 阅读全文
posted @ 2018-11-13 20:49 勇敢的巨蟹座 阅读(454) 评论(0) 推荐(0)
摘要:一、CRM项目的业务逻辑与表结构梳理 1、分析业务逻辑 (1) 引流(sem) (2) 网络咨询师(客服):添加客户信息和查看客户,分配销售 (3) 销售:查看私户 添加跟进记录 失败:加入公户 成功:缴费,修改状态 (4)产生的表有: 员工表,部门表,客户表,跟进记录表,缴费表,报名表 学生表,班 阅读全文
posted @ 2018-11-12 18:50 勇敢的巨蟹座 阅读(230) 评论(0) 推荐(0)
摘要:一、CRM项目(2) 利用Q查询中的q对象完成条件筛选功能。 批量删除、公户转私户功能。 新增一张跟进记录表ConsultRecord,迁移数据库并添加测试数据,实现跟进记录列表页面。 客户列表新增跟进记录字段,并与对应客户的跟进记录列表页面建立链接。 二、补充 1、Q查询补充 示例一: 示例二: 阅读全文
posted @ 2018-11-10 09:16 勇敢的巨蟹座 阅读(232) 评论(0) 推荐(0)
摘要:一、CRM项目(1) 引入三个表:用户表,客户表,校区表,班级表,梳理逻辑关系并迁移数据库,生成表。 使用admin插入数据,admin是Django提供的web形式的后台数据管理页面,它是和用户认证组件相通的,使用超级用户即可登录admin后台,并管理自己的数据库。 做出全部客户列表页面和我的客户 阅读全文
posted @ 2018-11-08 21:38 勇敢的巨蟹座 阅读(261) 评论(0) 推荐(0)
摘要:一、自定义分页(优势在于能够保存搜索条件) 分页中关于保存搜索条件关键点总结: 我们知道,request.GET和request.POST是QueryDict类型,而且是不可更改的,因为这是用户提交过来的原生数据,Django处于安全考虑,在源码中通过对request.GET和request.POS 阅读全文
posted @ 2018-11-07 22:13 勇敢的巨蟹座 阅读(381) 评论(0) 推荐(0)