django query模块
最近在接触一个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实现微信聊天机器人
分享几个Python针对微信的小工具,供大家参考,具体内容如下 用Python实现向微信用户发送每日一句 # -*- coding:utf-8 -*- from __future__ import unicode_literals from threading import Timer from wxpy import * import requests #bot = Bot() #bot = Bot(console_qr=2,cache_path="botoo.pkl")#这里的二维
-
python基于itchat实现微信群消息同步机器人
最近 全栈数据工程师养成攻略 的微信群已经将近500人,开了二群之后为了打通不同微信群之间的消息,花了点时间做了个消息同步机器人,在任意群收到消息时同步到其他群,并且将聊天内容上传至数据库,以供进一步分析.统计和展示. 基本思路是,用 Python 模拟微信登陆,接收到群里消息后,对文本.图片.分享等各类消息类型分别处理,并转发至其他群. 前期准备 首先得有一个微信号,用于代码模拟登陆.由于我的微信号得自己留着用,现阶段注册微信又必须要手机号,于是只好特意办了个电信号,用来申请了一个新的微信,微
-
教你用Python创建微信聊天机器人
最近研究微信API,发现个非常好用的python库:wxpy.wxpy基于itchat,使用了 Web 微信的通讯协议,实现了微信登录.收发消息.搜索好友.数据统计等功能. 这里我们就来介绍一下这个库,并在最后实现一个聊天机器人. 有没有很兴奋?有没有很期待? 好了,接下来,开始我们的正题. 准备工作 安装非常简单,从官方源下载安装 pip install -U wxpy 或者从豆瓣源安装 pip install -U wxpy -i "https://pypi.doubanio.com/sim
-
快速实现基于Python的微信聊天机器人示例代码
最近听说一个很好玩的图灵机器人api,正好可以用它做一个微信聊天机器人,下面是实现 # test.py import requests import itchat #这是一个用于微信回复的库 KEY = '8edce3ce905a4c1dbb965e6b35c3834d' #这个key可以直接拿来用 # 向api发送请求 def get_response(msg): apiUrl = 'http://www.tuling123.com/openapi/api' data = { 'key' :
-
利用Python实现微信找房机器人实例教程
目的 两年前曾为了租房做过一个找房机器人 「爬取豆瓣租房并定时推送到微信」,维护一段时间后就荒废了. 当时因为代码比较简单一直没开源,现在想想说不定开源后也能帮助一些同学更好的找到租房信息,所以简单整理后,开源到 github,地址:https://github.com/facert/zufang (本地下载) 下面是当时写的简单原理介绍: 身在帝都的人都知道租房的困难,每次找房都是心力交瘁.其中豆瓣租房小组算是比较靠谱的房源了,但是由于小组信息繁杂,而且没有搜索的功能,想要实时获取租房信息是件
-
详解用python自制微信机器人,定时发送天气预报
0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己.最近无意中发现了wxpy库,用它来做再合适不过了.以下是wxpy库的简介: wxpy基于itchat,使用了 Web 微信的通讯协议,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展.实现了微信登录.收发消息.搜索好友.数据统计.微信公众号.微信好友.微信群基本信息获取等功能. 废话不多说,代码写起来. 1 环境 操作系统:Windows / Li
-
python使用itchat库实现微信机器人(好友聊天、群聊天)
itchat是一个开源的微信个人号接口,可以使用该库进行微信网页版中的所有操作,比如:所有好友.添加好友.拉好友群聊.微信机器人等等.详细用户请看文档介绍,在这里. 本文主要使用该库完成一个能够处理微信消息的的图灵机器人,包括好友聊天.群聊天. 1.itchat库的安装 pip install itchat 安装完成后运行以下代码,会出现出现一张二维码,扫码登陆之后将会登陆微信网页. 2.登陆 import itchat # 登陆 itchat.auto_login() # 可设置hotRelo
-
django query模块
最近在接触一个Django项目,使用的是fbv( function-base views )模式,看起来特别不舒服,项目中有一个模型类117个字段,看我的有点晕,不过还是得干呀,生活呀,头发呀. 个人觉得这个模块用处不是很大,并且写的也不是很好.看了看源码如此简单,就给大家分享一下,也好久没有给大家分享东西了. import json def get_default_valcastfunc(val_cast_type=None): """通过一下方法传入的字符串判断使用哪种数
-
Django User 模块之 AbstractUser 扩展详解
最近在写博客,刚好写到用户注册注销模块,觉得这一方面还是挺有趣的.当尝试掀开 Django 的源代码时一切 API 就不会变得那么摸不着.顺着读Django 的各模块源码,我们可以更灵活地更改代码以实现自己想要的功能. 现在,思考一个问题,主需求是实现博客中用户的注册登录登出功能.如果只满足于用户注册时只登记其邮箱或是用户名,Django 自带的 User 模块既可以实现.但实际上,一个普遍的要求是注册用户应该能够修改自己的头像信息,邮箱信息,昵称信息等其他更灵活的需求. 可以先看一下 Djan
-
django orm模块中的 is_delete用法
数据库删除数据咱都知道,简单的说就是当一条数据对企业没用后,一般人可能会选择删除这条数据. 但是删除后,万一以后又突然有用呢.所以我们这时候会选择在写orm模块的时候,加入is_delete字段 is_delete = models.BooleanField(default=False,verbose_name='是否删除') 这样以后咱如果要删除一条数据了,就设置一下 is_delete=1 就表示这条数据在逻辑上删除了,简单的说就是你再怎么搜数据库也搜不到了,如果以后还用,就再设置 is_d
-
django 数据库连接模块解析及简单长连接改造方法
工作中纯服务端的项目用到了线程池和django的ORM部分.django 的数据库连接在每一个线程中开启一份,并在查询完毕后自动关闭连接. 线程池处理任务时,正常使用的连接中不会被关闭,但由于数据库端有最长连接时间的限制(默认为8小时),在超时后会发生InterfaceError: (0, '')(连接关闭后使用连接/游标)或Error(2006, 'MySQL server has gone away')(mysql 服务器主动关闭连接)这类错误,所以一般会在每个任务线程中调用django.d
-
Django日志模块logging的配置详解
前言 Django对于日志输出的信息是很完善的,request的信息,setting配置,trackback的信息,一应俱全,足够我们调试了.但是在线上环境,如果让用户看到这些信息,是很不安全的(暴露代码).所以在线上我们要关闭Debug,但是又不能扔掉这些调试信息,这就要用到logging模块. logging模块其实是Python的模块,在Django中有很多本地化的支持. 理解Logger 首先要理解logging的工作,这里面主要有四个东西:格式器formatter,过滤器filter,
-
详解Django定时任务模块设计与实践
在开发后台与任务相关的功能中,遇到一个需求:用户需要能够为任务配置定时策略,使任务定时执行某个操作. 需求分析 根据需求,我们可以拆解成如下几个步骤: 「某个操作」的实现 配置为定时任务 定时策略可配置 用户体验好 其中步骤 1 与本文无关不提:对于定时任务的实现,在上节Celery异步任务队列 有简单提到 celery 也支持定时任务. Celery 的定时任务策略配置于代码中,在启动 celery 时写入本地shelve文件,不利于管理. 因此在 celery 的文档中也提到一个扩展模块 d
-
获取django框架orm query执行的sql语句实现方法分析
本文实例讲述了获取django框架orm query执行的sql语句实现方法.分享给大家供大家参考,具体如下: 利用Django orM 可以很方便的写出很多查询,但有时候,我们需要检查这些利用 orM 生成的 SQL 语句是否正确,就需要检查这些ORM 生成的 原生的SQL 语句是否正确.经过测试有如下几种方法: 1. 通过数据库的跟踪日志,可以看到查询的语句,比如mysql 就可以配置把所有的 SQL 语句打印到日志中,但这种方式并不推荐,只是没有办法的时候才这么做. 2. 利用django
-
Django auth 应用模块详解
目录 Django auth 应用模块 一,Django的auth模块 二,auth应用模块的其他作用 三,auth模块总结 Django auth 应用模块 在设计开发任何一个站点的时候都需要有“用户”的概念,从用户的注册.登陆.退出或者注销,到用户的浏览.订阅等,这些都需要用户管理系统来实现.如果没有时间积累和相关开发工作经验,设计一个优秀的用户系统是很困难的.那么 Django 又是如何解决这个问题的呢? 一,Django的auth模块 Django 作为功能完善的 Web 框架充分考虑到
-
用Python的Django框架完成视频处理任务的教程
Stickyworld 的网页应用已经支持视频拨放一段时间,但都是通过YouTube的嵌入模式实现.我们开始提供新的版本支持视频操作,可以让我们的用户不用受制于YouTube的服务. 我过去曾经参与过一个项目,客户需要视频转码功能,这实在不是个容易达成的需求.需要大量的读取每一个视频.音讯与视频容器的格式再输出符合网页使用与喜好的视频格式. 考虑到这一点,我们决定将转码的工作交给 Encoding.com .这个网站可以免费让你编码1GB大小的视频,超过1GB容量的文件将采取分级计价收费. 开发
-
django生产环境搭建(uWSGI+django+nginx+python+MySQL)
目录 1.系统环境,必要知识 2.安装python3.6.5 3.安装Django 4.安装uWSGI 5.安装nginx 6.MySQL安装配置 7.编写一个简单的博客系统 1.系统环境,必要知识 #cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) #uname -r 3.10.0-862.3.2.el7.x86_64 暂时关闭防护墙,关闭selinux: #systemctl stop firewalld.service
随机推荐
- Linux编程之PING实现
- linux oracle数据库删除操作指南
- 使用python实现正则匹配检索远端FTP目录下的文件
- Swift版使用ThPullRefresh实现下拉上拉刷新数据
- JavaScript中push(),join() 函数 实例详解
- C#访问SQL Server数据库的实现方法
- javascript判断回文数详解及实现代码
- C语言解字符串逆序和单向链表逆序问题的代码示例
- SQLSERVER分页查询关于使用Top方式和row_number()解析函数的不同
- 在Mysql存储过程中使用事务实例
- jQuery实现宽屏图片轮播实例教程
- 使用jQuery实现的掷色子游戏动画效果
- Android中的Retrofit+OkHttp+RxJava缓存架构使用
- JavaScript实现精美个性导航栏筋斗云效果
- jQuery向webApi提交post json数据
- Java设计模式之Prototype原型模式
- java实现简单的学生信息管理系统代码实例
- vue2使用keep-alive缓存多层列表页的方法
- 易语言实现无需加好友强制查看QQ资料卡片的方法
- PHP设计模式之观察者模式定义与用法分析