【发布时间】:2020-03-25 06:52:40
【问题描述】:
我正在编写 Django 的视图来检查是否提供了有效的专辑 ID。但它看起来很麻烦且难以阅读。我想让它更具可读性和简短性。我不能直接检查data['id']。空白会报错。
def post(self, request):
if len(request.body) > 0:
data = json.loads(request.body.decode('utf-8'))
else:
return Response({'message': 'Album id is required'})
if 'id' not in data:
return Response({'message': 'Valid Album id is required'})
try:
id = int(data['id'])
if id < 1:
return Response({'message': 'Valid album id is required'})
album = Album.objects.get(pk=id)
except:
return Response({'message': 'Valid album id is required'})
【问题讨论】:
-
这段代码有一个与风格无关的明显问题:裸露的
try: ... except: ...您实际上期望会遇到什么错误?您应该始终尽可能地捕获具体的错误。至于pythonic:if len(request.body) > 0:应该只是if request.body: -
为了可读性,第一行是使用函数来封装逻辑。
-
是的。我还有其他类似的看法。所以我将使用函数使其更具可读性。
-
您可以将特定错误添加到您的 except
标签: python django python-3.x django-rest-framework