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通过递归遍历出集合中所有元素的方法
Feb 25 Python
Python的面向对象编程方式学习笔记
Jul 12 Python
python getopt详解及简单实例
Dec 30 Python
Python实现检测文件MD5值的方法示例
Apr 11 Python
python实现人民币大写转换
Jun 20 Python
Python3实现腾讯云OCR识别
Nov 27 Python
Python进度条的制作代码实例
Aug 31 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
Dec 09 Python
Python如何基于smtplib发不同格式的邮件
Dec 30 Python
Django-migrate报错问题解决方案
Apr 21 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
python b站视频下载的五种版本
May 27 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操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
推荐25个超炫的jQuery网格插件
2014/11/28 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
Angular17之Angular自定义指令详解
2018/01/21 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
python retrying模块的使用方法详解
2019/09/25 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
Python 随机按键模拟2小时
2020/12/30 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
优质的学校老师推荐信
2013/10/28 职场文书
2014年派出所工作总结
2014/11/21 职场文书
新郎答谢词
2015/01/04 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书
Python中使用ipython的详细教程
2021/06/22 Python