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使用百度翻译进行中翻英示例
Apr 14 Python
Python自动化构建工具scons使用入门笔记
Mar 10 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
python3+PyQt5实现文档打印功能
Apr 24 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 Python
python中可以声明变量类型吗
Jun 18 Python
Python爬虫代理池搭建的方法步骤
Sep 28 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 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
Javascript引用指针使用介绍
2012/11/07 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
python做量化投资系列之比特币初始配置
2018/01/23 Python
python 切换root 执行命令的方法
2019/01/19 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
心理健康教育心得体会
2013/12/29 职场文书
小学师德标兵先进事迹材料
2014/05/25 职场文书
个人工作总结范文2014
2014/11/07 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
排球赛新闻稿
2015/07/17 职场文书
法制工作总结2015
2015/07/23 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS
golang为什么要统一错误处理
2022/04/03 Golang