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批量转换文件编码格式
May 17 Python
Python中矩阵库Numpy基本操作详解
Nov 21 Python
Django 2.0版本的新特性抢先看!
Jan 05 Python
Python中实现switch功能实例解析
Jan 11 Python
PyQt5每天必学之工具提示功能
Apr 19 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
python利用thrift服务读取hbase数据的方法
Dec 27 Python
Django之模板层的实现代码
Sep 09 Python
python编写计算器功能
Oct 25 Python
Python多线程thread及模块使用实例
Apr 28 Python
Python计算矩阵的和积的实例详解
Sep 10 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乱码,用set names XXX解决的原理分享
2011/12/29 PHP
php array的学习笔记
2012/05/16 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
tensorflow实现简单的卷积神经网络
2018/05/24 Python
基于python中theano库的线性回归
2018/08/31 Python
python实现事件驱动
2018/11/21 Python
对python实现合并两个排序链表的方法详解
2019/01/23 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
linux面试题参考答案(10)
2016/10/26 面试题
自荐书封面下载
2013/11/29 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
户外婚礼策划方案
2014/02/08 职场文书
公司联欢会策划方案
2014/05/19 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
幸福终点站观后感
2015/06/04 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
vue3语法糖内的defineProps及defineEmits
2022/04/14 Vue.js