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标准库之循环器(itertools)介绍
Nov 25 Python
简单的抓取淘宝图片的Python爬虫
Dec 25 Python
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
Python使用tablib生成excel文件的简单实现方法
Mar 16 Python
Python实现视频下载功能
Mar 14 Python
Python多线程实现同步的四种方式
May 02 Python
详细分析python3的reduce函数
Dec 05 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
通过实例了解python property属性
Nov 01 Python
python中必要的名词解释
Nov 20 Python
python3 tcp的粘包现象和解决办法解析
Dec 09 Python
python各层级目录下import方法代码实例
Jan 20 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 empty函数判断mysql表单是否为空
2010/04/12 PHP
php 抽象类的简单应用
2011/09/06 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
深入php list()函数的详解
2013/06/05 PHP
php格式化日期实例分析
2014/11/12 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
zbar解码二维码和条形码示例
2014/02/07 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
学校卫生检查制度
2014/02/03 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS