字符串类型与日期类型的互换
字符串 => 日期类型与 日期类型 => 字符串,就单纯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)