昨日内容回顾

一、django事务

什么是事务

一系列将要发生或正在发生的连续操作。

作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。

MySQL事务

  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
  • 事务用来管理 insert,update,delete 语句

事务处理

用 BEGIN, ROLLBACK, COMMIT来实现

  • BEGIN 开始一个事务
  • ROLLBACK 事务回滚
  • COMMIT 事务确认

举例:

比如购买商品,在页面上,会有商品的数量

django事务

Django 1.4 事务默认模式是autocommit模式,每个查询都相当于一个事务,每次查询都直接提交commit事务,除非事务被禁止

在view里面的使用:

装饰器

@transaction.commit_on_success
def view():
a.save()
b.save()
return ...

with用法

def func()
with transaction.commit_on_success():
a.save()
b.save()
return ...

二、闭包应用

什么是闭包

先来理解一下,如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内部的我们叫他内函数。再来看定义

闭包: 在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。

更多详情,请参考链接:

https://www.cnblogs.com/Lin-Yi/p/7305364.html

三、客户管理

四、教学管理

五、权限应用

由于时间关系,详细的步骤略...

总结:

第一部分:权限管理

第二部分:stark组件

第三部分:crm业务
1. crm系统主要用于做什么?
客户关系管理。 2. 主要给谁用?
- 销售
- 客户分类,销售底薪+业绩
- 公户:申请(锁)
- 行锁:innodb -> 行锁+表锁+事务
- 表锁:Mysiam -> 表锁
- 私户:150人+自己客户
- 全户
- 客户跟进
- 缴费申请
- 推广
- 在公户中录入有效数据
- 渠道
- 在公户中录入有效数据
- 教学,老师
- 上课
- 作业
- 成绩
- 教质
- 考勤
- 问卷
- 学生
- 交作业
- 查成绩
- 查看个人信息
- 问卷 3. 技术点
- Form的作用?
- 对用户提交的一组表单数据进行校验。
- ModelForm的作用?
- 对用户提交的一组表单数据进行校验。
- 快速实现增加、修改
- FormSet的作用?
- 对用户提交的多组表单数据进行校验。
- ModelFormSet的作用?
- 对用户提交的多组表单数据进行校验。
- 快速实现增加、修改 第四部分:权限的应用 a. 录入权限信息
http://127.0.0.1:8000/rbac/menu/list/
http://127.0.0.1:8000/rbac/multi/permissions/?type=update b. 分配权限
创建角色:http://127.0.0.1:8000/rbac/role/list/
权限分配:http://127.0.0.1:8000/rbac/distribute/permissions/ c. 权限验证+自动生成菜单 # 权限信息初始化
init_permission(user_obj,request) MENU_SESSION_KEY = "u8fkksjdfkjsf"
PERMISSION_SESSION_KEY = "u8fkksjdfkjsf" # 中间件请求进行权限校验
'rbac.middleware.rbac.RbacMiddleware' PERMISSION_VALID_URL = [
'/login/',
'/admin/.*',
] # inclusion_tag
{% load rbac %}
{% menu request %}
{% breadcrumb request %} # 引入css和js
<link rel="stylesheet" href="{% static 'rbac/css/rbac.css' %} "/>
<script src="{% static 'rbac/js/rbac.js' %} "></script> d. 按钮的控制 from django.conf import settings
from stark.service.stark import StarkConfig class RbacPermission(object): def get_add_btn(self):
name = "%s:%s" %(self.site.namespace,self.get_add_url_name,)
permission_dict = self.request.session.get(settings.PERMISSION_SESSION_KEY)
if name in permission_dict:
return super().get_add_btn() def get_list_display(self):
val = super().get_list_display()
permission_dict = self.request.session.get(settings.PERMISSION_SESSION_KEY)
edit_name = "%s:%s" %(self.site.namespace,self.get_change_url_name,)
del_name = "%s:%s" %(self.site.namespace,self.get_del_url_name,)
if edit_name not in permission_dict:
val.remove(StarkConfig.display_edit) if del_name not in permission_dict:
val.remove(StarkConfig.display_del) return val 每个配置去继承即可。 CRM结束:
1. 课程100% = 3年 2. 学习阶段 初级阶段:增删改查 + Linux 阶段升级:做项目增加熟练度 + 开发组件 + Linux 阶段升级:看源码(Flask+Django) + Linux 阶段升级:架构(Linux硬件+代码(设计模式+领域驱动模型)) + Linux 合伙人搞创业 3. 如何让简历漂亮
a. 项目+技术点 b. 热点 c. 自学能力 源码 4. 设计+讲话能力

完整代码,请参考:

第一阶段(不包含权限应用)

链接:https://pan.baidu.com/s/11XFG6QZ_W5wCEt0HzdqPkA 密码:g9ye

终极版:

链接:https://pan.baidu.com/s/14Y5ioQkEuJBvoL1pCXsqmg 密码:gz6p

未完待续...

python 全栈开发,Day118(django事务,闭包,客户管理,教学管理,权限应用)的更多相关文章

  1. Python全栈开发:django网络框架(一)

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  2. Python全栈开发:django网络框架(二)

    Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...

  3. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  4. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  5. python全栈开发目录

    python全栈开发目录 Linux系列 python基础 前端~HTML~CSS~JavaScript~JQuery~Vue web框架们~Django~Flask~Tornado 数据库们~MyS ...

  6. python全栈开发学习_内容目录及链接

    python全栈开发学习_day1_计算机五大组成部分及操作系统 python全栈开发学习_day2_语言种类及变量 python全栈开发_day3_数据类型,输入输出及运算符 python全栈开发_ ...

  7. Python全栈开发相关课程

    Python全栈开发 Python入门 Python安装 Pycharm安装.激活.使用 Python基础 Python语法 Python数据类型 Python进阶 面向对象 网络编程 并发编程 数据 ...

  8. Python 全栈开发【第0篇】:目录

    Python 全栈开发[第0篇]:目录   第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...

  9. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

随机推荐

  1. 计算机网络原理和OSI模型与TCP模型

    计算机网络原理和OSI模型与TCP模型 一.计算机网络的概述 1.计算机网络的定义 计算机网络是一组自治计算机的互连的集合 2.计算机网络的基本功能 a.资源共享 b.分布式处理与负载均衡 c.综合信 ...

  2. python---web框架本质(2)

    目录 controllers //存放控制方法 models //存放模型方法 views //存放视图模板 index.html new.html show.html index.py //用户访问 ...

  3. Hive记录-加载文件进行查询操作

    Hive可以运行保存在文件里面的一条或多条的语句,只要用-f参数,一般情况下, 保存这些Hive查询语句的文件通常用.q或者.hql后缀名,但是这不是必须的, 你也可以保存你想要的后缀名.假设test ...

  4. POJ - 2031 Building a Space Station(计算几何+最小生成树)

    http://poj.org/problem?id=2031 题意 给出三维坐标系下的n个球体,求把它们联通的最小代价. 分析 最小生成树加上一点计算几何.建图,若两球体原本有接触,则边权为0:否则边 ...

  5. .Net进阶系列(15)-异步多线程(线程的特殊处理和深究委托赋值)(被替换)

    1. 线程的异常处理 我们经常会遇到一个场景,开启了多个线程,其中一个线程报错,导致整个程序崩溃.这并不是我们想要的,我需要的结果是,其中一个线程报错,默默的记录下,其它线程正常进行,保证程序整体可以 ...

  6. 简述get与post区别

    get和post在HTTP中都代表着请求数据,其中get请求相对来说更简单.快速,效率高些. get对于请求数据和静态资源(HTML页面和图片),在低版本浏览器下都会缓存.高版本浏览器只缓存静态资源, ...

  7. bzoj 1724 优先队列 切割木板

    倒着的石子合并,注意不是取当前最长木板贪心做,而是取当前最小累加答案: 例如 4 5 6 7 若按第一种思路:ans=22+15+9 第二种:ans=22+13+9,可以先从中间某一块分开,这样答案更 ...

  8. 关于Laravel 无法下载的问题

    今天在git bush用composer安装laravel5.5卡住了,无法下载 解决办法:更换到国内源,就可以下载了 运行命令: composer config -g repo.packagist ...

  9. css scrollbar样式设置

    参考链接:https://segmentfault.com/a/1190000012800450

  10. escape、encodeURI和encodeURIComponent的区别

    1.简单解释 简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读. 编码之后的效果是%XX或者%uXXXX这种形式. 其中 ASCII字母. ...