一、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
  1. def view():
  2. a.save()
  3. b.save()
  4. return ...

with用法

  1. def func()
  2. with transaction.commit_on_success():
  3. a.save()
  4. b.save()
  5. return ...

二、闭包应用

什么是闭包

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

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

更多详情,请参考链接:

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

三、客户管理

四、教学管理

五、权限应用

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

总结:

  1. 第一部分:权限管理
  2. 第二部分:stark组件
  3. 第三部分:crm业务
  4. 1. crm系统主要用于做什么?
  5. 客户关系管理。
  6. 2. 主要给谁用?
  7. - 销售
  8. - 客户分类,销售底薪+业绩
  9. - 公户:申请(锁)
  10. - 行锁:innodb -> 行锁+表锁+事务
  11. - 表锁:Mysiam -> 表锁
  12. - 私户:150人+自己客户
  13. - 全户
  14. - 客户跟进
  15. - 缴费申请
  16. - 推广
  17. - 在公户中录入有效数据
  18. - 渠道
  19. - 在公户中录入有效数据
  20. - 教学,老师
  21. - 上课
  22. - 作业
  23. - 成绩
  24. - 教质
  25. - 考勤
  26. - 问卷
  27. - 学生
  28. - 交作业
  29. - 查成绩
  30. - 查看个人信息
  31. - 问卷
  32. 3. 技术点
  33. - Form的作用?
  34. - 对用户提交的一组表单数据进行校验。
  35. - ModelForm的作用?
  36. - 对用户提交的一组表单数据进行校验。
  37. - 快速实现增加、修改
  38. - FormSet的作用?
  39. - 对用户提交的多组表单数据进行校验。
  40. - ModelFormSet的作用?
  41. - 对用户提交的多组表单数据进行校验。
  42. - 快速实现增加、修改
  43. 第四部分:权限的应用
  44. a. 录入权限信息
  45. http://127.0.0.1:8000/rbac/menu/list/
  46. http://127.0.0.1:8000/rbac/multi/permissions/?type=update
  47. b. 分配权限
  48. 创建角色:http://127.0.0.1:8000/rbac/role/list/
  49. 权限分配:http://127.0.0.1:8000/rbac/distribute/permissions/
  50. c. 权限验证+自动生成菜单
  51. # 权限信息初始化
  52. init_permission(user_obj,request)
  53. MENU_SESSION_KEY = "u8fkksjdfkjsf"
  54. PERMISSION_SESSION_KEY = "u8fkksjdfkjsf"
  55. # 中间件请求进行权限校验
  56. 'rbac.middleware.rbac.RbacMiddleware'
  57. PERMISSION_VALID_URL = [
  58. '/login/',
  59. '/admin/.*',
  60. ]
  61. # inclusion_tag
  62. {% load rbac %}
  63. {% menu request %}
  64. {% breadcrumb request %}
  65. # 引入css和js
  66. <link rel="stylesheet" href="{% static 'rbac/css/rbac.css' %} "/>
  67. <script src="{% static 'rbac/js/rbac.js' %} "></script>
  68. d. 按钮的控制
  69. from django.conf import settings
  70. from stark.service.stark import StarkConfig
  71. class RbacPermission(object):
  72. def get_add_btn(self):
  73. name = "%s:%s" %(self.site.namespace,self.get_add_url_name,)
  74. permission_dict = self.request.session.get(settings.PERMISSION_SESSION_KEY)
  75. if name in permission_dict:
  76. return super().get_add_btn()
  77. def get_list_display(self):
  78. val = super().get_list_display()
  79. permission_dict = self.request.session.get(settings.PERMISSION_SESSION_KEY)
  80. edit_name = "%s:%s" %(self.site.namespace,self.get_change_url_name,)
  81. del_name = "%s:%s" %(self.site.namespace,self.get_del_url_name,)
  82. if edit_name not in permission_dict:
  83. val.remove(StarkConfig.display_edit)
  84. if del_name not in permission_dict:
  85. val.remove(StarkConfig.display_del)
  86. return val
  87. 每个配置去继承即可。
  88. CRM结束:
  89. 1. 课程100% = 3
  90. 2. 学习阶段
  91. 初级阶段:增删改查 + Linux
  92. 阶段升级:做项目增加熟练度 + 开发组件 + Linux
  93. 阶段升级:看源码(Flask+Django + Linux
  94. 阶段升级:架构(Linux硬件+代码(设计模式+领域驱动模型)) + Linux
  95. 合伙人搞创业
  96. 3. 如何让简历漂亮
  97. a. 项目+技术点
  98. b. 热点
  99. c. 自学能力 源码
  100. 4. 设计+讲话能力

完整代码,请参考:

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

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

终极版:

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

未完待续…