Python Web开发技巧III

news/2024/10/17 22:15:56/

字符串类型与日期类型的互换

字符串 => 日期类型与 日期类型 => 字符串,就单纯SDK操作,简洁写法,开发使用这种写法就OK了。

from datetime import datetime, date# str -> datetime
res1 = date(*map(int, "2023-04-25".split('-')))  # datetime -> str
today = datetime.today().date()
res2 = str(today)  # 2023-04-25

datetime类型时间差

datetime类型的好处在于,极其方便了日期的比较。

还能获取时间差:

from datetime import datetime, timedelta, datetoday1 = datetime.today().date()  # 2023-04-25
# 减法操作,同时支持负整数
today2 = today1 - timedelta(days=1)  # 2023-04-24if "2023-04-24" == str(today2)  # 日期类型比较是ok的print("hjhh")print(today1 - today2)  # 1 day, 0:00:00# 如何获得可使用的时间差呢?字符串的方式操作一下即可
print(str(today1 - today2).split(' ')[0])       # '1'
print(int(str(today1 - today2).split(' ')[0]))  # 1

 Python 判断对象是否包含某个属性

最便捷的方法:调用hasattr方法

hasattr(object, name)

@return boolean

# web中常用场景之一,序列号器get字段时判断属性
class XXXserializer(serializers.Serializer):id = serializers.CharField(required=False)name = serializers.CharField(required=False, read_only=True, allow_null=True, allow_blank=True)get_name(self, obj):if hasattr(obj, 'id'):pass

Django关于Redis列表的小部分简洁操作记录

一个是key的设置

xxx = request.data["xxx"]
key = f"{xxx}_{datetime.today().date()}_key"  # 作为redis的key

对redis列表list,会发现大致只有一种简单的方法可以判断是否key不存在。(除开是异常捕捉这种)

# redis取列表左首元素,如果这个key不存在,那么会返回nil
con.lindex(key, 0)# 获取列表长度,key不存在和key存在而列表为空都会返回0
con.llen(key) 

另外清除list的方式:

con.ltrim(continue_punch_key, 1, 0)

 


http://www.ppmy.cn/news/51141.html

相关文章

LeetCode 2418. 按身高排序

【LetMeFly】2418.按身高排序 力扣题目链接:https://leetcode.cn/problems/sort-the-people/ 给你一个字符串数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i,names[i] 和 heights[i…

根据身高排序(力扣2418)

问题: 给你一个字符串数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i,names[i] 和 heights[i] 表示第 i 个人的名字和身高。 请按身高 降序 顺序返回对应的名字数组 names 。 示例 …

第4章:运算符

1.算术运算符 ① SELECT 10010,100-35.5,100*2,100/2,100%30 FROM DUAL;②在sql中“”没有连接作用,表示加法运算,字符串转换为数值(隐式转换)。非数值看作0处理 SELECT 1001 1 FROM DUAL;SELECT 100 a FROM DUAL;③加法运算…

数字化转型危与机,20年老厂的升级之路

“投资大、周期长、见效慢”,是每一家企业在考虑数字化战略时,都会纠结的问题。 打江山容易,守江山难 企业在快速扩张的过程中,往往可以不需要过多的考虑细节的问题,跑马圈地的打法会更加有效。 但是市场占有量开始饱…

Turndown 源码解析:一、辅助函数

extend() Object.assign的补丁。 function extend (destination) {for (var i 1; i < arguments.length; i) {var source arguments[i];for (var key in source) {if (source.hasOwnProperty(key)) destination[key] source[key];}}return destination }repeat() Stri…

基于Java+Springboot+Vue+elememt甜品屋蛋糕商城系统设计和实现

基于JavaSpringbootVueelememt甜品屋蛋糕商城系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…

(十九)查找算法-线性查找

1 查找算法基本介绍 在 Java 中&#xff0c;常用的查找算法有4种&#xff1a; &#xff08;1&#xff09;顺序&#xff08;线性&#xff09;查找 &#xff08;2&#xff09;二分查找/折半查找 &#xff08;3&#xff09;插值查找 &#xff08;4&#xff09;斐波那契查找 2 线…

《程序员面试金典(第6版)》面试题 16.03. 交点(直线的一般式方程,克莱姆法则,行列式,C++)

题目描述 给定两条线段&#xff08;表示为起点start {X1, Y1}和终点end {X2, Y2}&#xff09;&#xff0c;如果它们有交点&#xff0c;请计算其交点&#xff0c;没有交点则返回空值。 要求浮点型误差不超过10^-6。若有多个交点&#xff08;线段重叠&#xff09;则返回 X 值最…