python - 错误在哪里???KeyError:“开始日期”
问题描述
我没有在我的 GET 请求中放入任何正文参数(start_date,end_date),应该可以使用 else 语句但出现奇怪的错误,所以有问题吗??
class MoviesTop(APIView):
def get(self, request):
if request.data.get('start_date', 'end_date'):
start_timestamp = request.data['start_date']
end_timestamp = request.data['end_date']
topMovie = Movie.objects.annotate(
num_comments=Count(
'Comments',
filter=Q(Comments__pub_date__range=(
start_timestamp, end_timestamp))
)
).order_by('-num_comments')
else:
topMovie=Movie.objects.annotate(
num_comments=Count('Comments')).order_by('-num_comments')
serializer=MoviesTopSerializator(topMovie, many=True)
return Response(serializer.data)
解决方案
request.data.get('start_date', 'end_date')
会有真实性True
,即使start_date
不存在。它将返回'end_date'
,第二个参数是默认值,而不是另一个要检查的键。
因此,您可以通过以下方式检查:
if 'start_date' in request.data and 'end_date' in request.data:
# …
推荐阅读
- html - 同一类元素的量角器定位器
- spring-boot - 使用 Jasypt 加密的 Spring Boot 外部化配置(引导问题)
- kubernetes - 运行 kubectl 命令 Helm post install
- bash - 如何将命令行参数传递给 docker-compose run?
- python - 收到一封空白电子邮件
- php - 伙计们,那里的任何人都严重陷入了codeigniter 3路线
- ios - 如何使用swift中的自定义按钮选择tableview中的所有单元格?
- typescript - 为 DSL 扩展 TypeScript 编译器
- c# - 在 while 部分变为假 C# 后,Do-while 循环不会停止
- spring - 缺少肥皂动作 :: Spring 集成