为什么我的Angular前端不能将$ http.get参数更正为Django后端?

时间:2016-09-08 06:00:20

标签: javascript python angularjs django http-get

我有一个Web应用程序,由用Angular / Javascript编写的前端客户端和用Python / Django编写的后端服务器组成。

我正在尝试从客户端向服务器执行简单的http GET请求,但它无法正常工作。失败的原因是因为某些未知原因,参数未正确传递。

以下是我的客户端上调用的代码行:

  $http.get(API + '/api/getProfile', {'profileId':5}).then(console.log('A'), console.log('B'));

以下是我服务器上的相关代码行:

class GetProfileAPI(views.APIView):
    def get(self, request, *args, **kwargs):
        logger.info("request.get_full_path() = %s" % request.get_full_path())
        profile_id_arg = request.GET.get('profileId')
        logger.info("profile_id_arg = %s (%s)" % (profile_id_arg, type(profile_id_arg)))
        # Do something here if profile_id_arg is not None.

当我运行此代码时,我希望服务器端的profile_id_arg为字符串5。但请看一下我得到的输出:

request.get_full_path() = /api/getProfile
profile_id_arg = None (<type 'NoneType'>)

为什么profile_id没有得到正确接收?我该如何解决这个问题?代码示例会有所帮助。

1 个答案:

答案 0 :(得分:2)

HTTP GET请求不能包含要发布到服务器的数据。但是,您可以在请求中添加查询字符串。

 $http.get(API + '/api/getProfile', {params:{'profileId':5}})
      .then(function (response) { /* */ })...

OR

$http({ 
     url: API + '/api/getProfile', 
     method: "GET",
     params: {'profileId':5}
  });

check here1check here2