django中嵌套的try-except
# 因为此时为yaml模板,而且只抓取node port,所以这样处理效率快content_dict = parse_yaml(content.replace("{{", "").replace("}}", ""))if 'service' in content_dict.keys(): # 记录本次yaml里所有的node_port,并更新到数据库 now_app_list = [] for service_item in content_dict['service']: for port_item in service_item['port']: if 'nodePort' in port_item.keys(): node_port = int(port_item['nodePort']) if 30000 <= node_port <= 32000: # 这里判断比较复杂,如果端口有,而且app相同,不更新。如果端口有,app不一样,报冲突。如果端口没有,可插入。 now_app_list.append(node_port) try: AppPort.objects.get(node_port=node_port, app=app) pass except AppPort.DoesNotExist: try: AppPort.objects.get(node_port=node_port) messages.info(self.request, 'nodeport{}端口冲突!'.format(node_port)) return HttpResponseRedirect(reverse_lazy("app:yaml_edit", kwargs=self.kwargs)) except AppPort.DoesNotExist: name = '{}-{}'.format(app.name, node_port) AppPort.objects.create( name=name, app=app, node_port=node_port ) else: messages.info(self.request, 'nodeport{}端口不在指定范围内(30000-~32000)!'.format(node_port)) return HttpResponseRedirect(reverse_lazy("app:yaml_edit", kwargs=self.kwargs)) # 取出AppPort里所有此app的node_port,多余的要清除。 all_app_list = AppPort.objects.filter(app=app).values_list('node_port', flat=True) if all_app_list: # 取交集,也就是数据库里多余的端口列表 diff_list = [x for x in all_app_list if x not in now_app_list] if diff_list: AppPort.objects.filter(node_port__in=diff_list).delete()
感觉上面这段代码,应用的技术点蛮多的,作个记录。
包括其node port的管理思想,提取技巧。
orm的列表扁平化,列表交集,批量删除
django中嵌套的try-except的更多相关文章
- django中数据库操作——in操作符
django一对多关系中,为了实现按照一端查询多端,之前都是用extra操作符,经过查看官方文档还有in这个操作符,用这个实现更简单.直接上代码: 根据查询条件模糊查询所有符合条件的机架列表,然后根据 ...
- Django中URL的解析和反查
add by zhj: 如果想用reverse(namespace1:namespace2:...:namespaceN:name)反查url(注意:用reverse('polls:index')方法 ...
- Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法
Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...
- 异步任务队列Celery在Django中的使用
前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...
- Mysql事务探索及其在Django中的实践(二)
继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...
- Mysql事务探索及其在Django中的实践(一)
前言 很早就有想开始写博客的想法,一方面是对自己近期所学知识的一些总结.沉淀,方便以后对过去的知识进行梳理.追溯,一方面也希望能通过博客来认识更多相同技术圈的朋友.所幸近期通过了博客园的申请,那么今天 ...
- jsp的 javascript中 嵌套 html 注释
看到公司的代码,我也是蛋疼了,各种乱. 还发现有很多的jsp的 javascript中 嵌套 html 注释, 这个可行? 我之前可是没用过. 后面查找各种资料发现,这个也是可行的,主要是为了兼容不支 ...
- Django 中url补充以及模板继承
Django中的URL补充 默认值 在url写路由关系的时候可以传递默认参数,如下: url(r'^index/', views.index,{"name":"root& ...
- django中css问题
django中加载的css,js,图片其中js和图片可以加载出来,而css没有效果.原因如下: 这是因为你安装的某些IDE 或者其他更改了注册表导致的系统的注册表\HKEY_CLASSES_ROOT\ ...
随机推荐
- 汇编和C/C++的混合编程方式
常用的有三种方式: 在C/C++代码中嵌入汇编指令 汇编调用C/C++ C/C++中调用汇编 实例一: 在C中嵌入汇编: void string_copy(char *dst,const char * ...
- ionic4打包和ngix配置
ionic4打包 ng run app:build --base-href=/edu/course/mobile压缩打包 ng run app:build:production --base-href ...
- Nor Flash的理论性能
简介 为了评估Nor性能优化空间,我需要根据Spec计算出极限情况下,Nor Flash的性能理论值. 在全志的R**相关项目中分别支持ESMT.MXIC.Winbond.GD这4个厂家的Nor Fl ...
- Kubernetes 遇到的问题
Kubernetes 遇到的问题 k8s 版本 k8s v1.13.5 docker 18.09.2 问题一 kubelet 报错 May 22 10:14:42 test-ops-k8s-03 ku ...
- c#菜单动态合并 z
说明 在程序中经常使用弹出菜单,并且一个窗体中可以存在多个弹出菜单.开发过MDI窗体的读者可能都知道,当MDI子窗体最大化时,子窗体和主窗体的菜单能够自动的合并.这是如何实现的呢?本例实现了将两个弹出 ...
- ubuntu python 版本管理
ubuntu 命令行查看 python 目录 $ whereis python # 显示所有得到 python 目录 $ which python # 显示默认的 python 解释器目录 $ wh ...
- Java连载36-IDE使用
一.主方法注意 每一个类都可以编写一个主方法,但是一般情况下,一个系统只有一个入口,所以主方法一般写一个 二.Myeclipse的使用 1.在workspace中工作区中有一个文件夹.metadata ...
- vue开发 element的select下拉框设定初值后,不能重新选择的问题
问题描述: 用的element的select可多选的下拉选框,在回显后有初始值的情况下,不能修改,也不能再选择 如图,明明点击了一般内勤主管,但没有任何反应 <el-select v-model ...
- Spring、SpringMVC、Hibernate整合 ----超详细教程
一.数据库表 /* Navicat MySQL Data Transfer Source Server : 本地连接 Source Server Version : 50720 Source Host ...
- skeleton在心意web上的实践
通过手动编写skeleton,在fetch数据时显示skeleton loading,数据拉取成功隐藏skeleton 先看下效果图 在component下创建页面对应的skeleton,然后通过在i ...