Javascript Django:API的实现和确定错误
对于客户端(js)和服务器之间的通信,我想创建一个API。所有客户端请求(js函数)都应该可以访问API 我想说,当服务器的响应标准化时,它是优雅的。这样,客户端的解释也可以标准化 例如,my API模块(Python)返回一个带有默认设置的JSON对象:Javascript Django:API的实现和确定错误,javascript,python,django,Javascript,Python,Django,对于客户端(js)和服务器之间的通信,我想创建一个API。所有客户端请求(js函数)都应该可以访问API 我想说,当服务器的响应标准化时,它是优雅的。这样,客户端的解释也可以标准化 例如,my API模块(Python)返回一个带有默认设置的JSON对象: responseData = { "action_success": False, "data_container": None, "error": {
responseData = {
"action_success": False,
"data_container": None,
"error": {
"code": 0,
"message": "",
}
}
让我们看一下模块api
的一个示例函数login
def login(request):
# Get post data
post = json.loads(request.body)
# Get username and password
username = post.get('username', None)
password = post.get('password', None)
# Initialize response data
responseData = {
"action_success": False,
"data_container": None,
"error": {
"code": 0,
"message": "",
}
}
if username == '' or username is None:
responseData.action_success = False
responseData.error.code = 1
responseData.error.message = "login.no_username"
return JsonResponse(responseData)
elif password == '' or password is None:
responseData.action_success = False
responseData.error.code = 2
responseData.error.message = "login.no_password"
return JsonResponse(responseData)
# Check if username/password combination is correct
user = authenticate(username=username, password=password)
if user is not None:
# User login
login(request, user)
responseData.action_success = True
responseData.error.code = 0
return JsonResponse(responseData)
else:
responseData.action_success = False
responseData.error.code = 3
responseData.error.message = "login.failed"
return JsonResponse(responseData)
如您所见,我需要几个if
语句来确定错误responseData.error.message
。这应该在客户端用作反馈。如何准确地翻译信息不应该是这个问题的一部分
在处理非Django函数时(例如,如果存在文件),也会出现确定正确错误消息的问题。所以我有两个问题:
最简单的方法是在后端(python)中创建一些视图集和序列化程序,您可以在此处查看文档: 根据您的操作方式,您的视图集将指向特定的序列化程序,例如(但不限于):
- 索引以返回对象列表
- 一个物体的细节等
- 等等
- 错误的数据类型
- 与数据库相比,数据错误
- 其他
在前端(您的JS),您可以读取包含的错误消息,然后决定提醒用户该问题。这将避免在后端出现大量可识别的标准错误。最简单的方法是在后端(python)中创建一些视图集和序列化程序,您可以在此处查看文档: 根据您的操作方式,您的视图集将指向特定的序列化程序,例如(但不限于):
- 索引以返回对象列表
- 一个物体的细节等
- 等等
- 错误的数据类型
- 与数据库相比,数据错误
- 其他