Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Django:API的实现和确定错误_Javascript_Python_Django - Fatal编程技术网

Javascript Django:API的实现和确定错误

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": {

对于客户端(js)和服务器之间的通信,我想创建一个API。所有客户端请求(js函数)都应该可以访问API

我想说,当服务器的响应标准化时,它是优雅的。这样,客户端的解释也可以标准化

例如,my API模块(Python)返回一个带有默认设置的JSON对象:

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函数时(例如,如果存在文件),也会出现确定正确错误消息的问题。所以我有两个问题:

  • 是否有其他/更简单的方法来确定错误消息
  • 标准化返回的JSON对象是一个好主意吗?对于这种API的使用和实现,目前推荐的是什么

  • 最简单的方法是在后端(python)中创建一些视图集和序列化程序,您可以在此处查看文档:

    根据您的操作方式,您的视图集将指向特定的序列化程序,例如(但不限于):

    • 索引以返回对象列表
    • 一个物体的细节等
    • 等等
    如果从前端接收到的JSON有任何错误,例如:

    • 错误的数据类型
    • 与数据库相比,数据错误
    • 其他
    然后序列化程序将返回一个错误对象


    在前端(您的JS),您可以读取包含的错误消息,然后决定提醒用户该问题。这将避免在后端出现大量可识别的标准错误。

    最简单的方法是在后端(python)中创建一些视图集和序列化程序,您可以在此处查看文档:

    根据您的操作方式,您的视图集将指向特定的序列化程序,例如(但不限于):

    • 索引以返回对象列表
    • 一个物体的细节等
    • 等等
    如果从前端接收到的JSON有任何错误,例如:

    • 错误的数据类型
    • 与数据库相比,数据错误
    • 其他
    然后序列化程序将返回一个错误对象

    在前端(您的JS),您可以读取包含的错误消息,然后决定提醒用户该问题。这将避免在后端出现许多可以识别的标准错误