json - 如何从 django 请求中获取分钟/小时/秒?
问题描述
我想从请求中单独检索时间字段。但是当我尝试处理值时,HttpResponse 会给出 406 状态码。
def ReservationActions(request):
if(request.method == 'POST'):
body_as_json = json.loads(request.body)
try:
veh = Vehicles.objects.get(id = body_as_json['vehic__id'])
sp = ParkingSpots.objects.get(id = body_as_json['spot__id'])
reserve = Reservations(vehic = veh, spot = sp, start_date = body_as_json.get('start'), end_date = body_as_json.get('end'))
if(reserve.start_date.datetime.minute % 15 is not 0): #this is where it goes to "except" part
return HttpResponse(status=306)
reserve.save()
# Return a "created" (201) status code.
return HttpResponse(status=201)
except:
# Return a "not acceptable" (406) status code.
return HttpResponse(status=406)
这是我发送的 json 对象:
{
"vehic__id": 1,
"spot__id": 1,
"start": "2018-03-29T23:00:00.999Z",
"end" : "2018-03-30T23:00:30.000Z"
}
解决方案
您将其解析为一个datetime
对象,例如使用python-dateutil
[PyPi]。例如:
from dateutil.parser import parse as dtparse
try:
start = dtparse(body_as_json.get('start'))
except (ValueError, TypeError):
# ... (invalid date, or not a string)
pass
如果 this 没有引发异常,start
则是一个datetime
对象。然后start
. 因此,您可以通过以下方式检查:
if not start.minute % 15:
# minute is 0, 15, 30, or 45
pass
else:
# not the case
pass
推荐阅读
- c# - 向我在代码 c# wpf 中创建的椭圆添加动画
- react-native - 签名的发布 apk 未使用 android studio 生成本机反应
- haskell - 类型安全模块化算法无注释
- javascript - 无法更新 FireStore 中的字段
- python - 使用python保存excel文件
- stored-procedures - 使用存储过程更新列
- visual-studio-code - Visual Studio2019 和 VS Code 键盘快捷键
- c - “%d 将输入的其余部分转换为整数”是什么意思?
- phaser-framework - 如何在移相器中创建新键
- crystal-reports-xi - 为行生成序列号,避免水晶报表 XI 中的重复行