django query模块


Posted in Python onApril 20, 2019

最近在接触一个Django项目,使用的是fbv( function-base views )模式,看起来特别不舒服,项目中有一个模型类117个字段,看我的有点晕,不过还是得干呀,生活呀,头发呀。

个人觉得这个模块用处不是很大,并且写的也不是很好。看了看源码如此简单,就给大家分享一下,也好久没有给大家分享东西了。

import json
def get_default_valcastfunc(val_cast_type=None):
 """通过一下方法传入的字符串判断使用哪种数据返回"""
 if val_cast_type == 'int':
  return 0, int
 elif val_cast_type == 'listjson':
  return '[]', json.loads
 elif val_cast_type == 'dictjson':
  return '{}', json.loads
 return None, None
def get_query_value(request, key, default=None, val_cast_func=None, val_cast_type=None):
 """ 通过val_cast_type获取到优化数据的函数,或者通过val_cast_func函数传入val """
 if val_cast_type in ['int', 'listjson', 'dictjson']:
  default, val_cast_func = get_default_valcastfunc(val_cast_type)
 value = request.POST.get(key) or request.GET.get(key) or default
 return val_cast_func(value) if val_cast_func else (value or '')自认为的几个重点

request.POST.get这样取值即使key不存在也不会报错,而是返回None,而request.POST[key]这样会报错KeyError ,GET同POST Django的模型类使用get若无值,则会报错。

在返回的时候使用参数val_cast_func,而val_cast_func并未传入,而是通过get_default_valcastfunc返回设置

Python 相关文章推荐
Python实现批量转换文件编码的方法
Jul 28 Python
Python找出9个连续的空闲端口
Feb 01 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
利用python获取Ping结果示例代码
Jul 06 Python
python写入文件自动换行问题的方法
Jul 05 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
python实现指定ip端口扫描方式
Dec 17 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
Python WSGI 规范简介
Apr 11 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 #Python
详解Python3 基本数据类型
Apr 19 #Python
python面向对象法实现图书管理系统
Apr 19 #Python
python远程连接MySQL数据库
Apr 19 #Python
详解Python匿名函数(lambda函数)
Apr 19 #Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 #Python
Python3中列表list合并的四种方法
Apr 19 #Python
You might like
PHP编码规范-php coding standard
2007/03/16 PHP
PHP在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
[01:00]选手抵达华西村 整装待发备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
python中range()与xrange()用法分析
2016/09/21 Python
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
Python中一般处理中文的几种方法
2019/03/06 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
浅析python标准库中的glob
2020/03/13 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
保险内勤岗位职责
2014/04/05 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
求职信内容怎么写
2014/05/26 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
python脚本框架webpy的url映射详解
2021/11/20 Python