这是javascript部分。正在从该文件中调用以下 store_token 函数,并传递了一个字符串值,例如“ AasdfGth:Jl-Hjf ....”(浏览器令牌值)
function store_token(token) {
var data = {'reg_id':token};
console.log("Reg id", data);
data = JSON.stringify(data);
$.post('/api_call_for_django_view', data, function(response){});
};
django视图是-
@csrf_exempt
@api_view(['POST'])
@permission_classes((AllowAny,))
def api_call_for_django_view(request):
if request.method == 'POST':
token = request.POST.dict()
print("", token) #this gives a value {'{"reg_id":{}}': ''}
registration_id = token['reg_id']
不知道为什么令牌值成功到达 store_token 函数时未通过令牌值!
console.log("Reg id", data);
我希望将reg_id
字符串值(即来自JavaScript的token
)存储到Django视图的registration_id
变量中
答案 0 :(得分:1)
正如@mursalin指出的那样,token
变量是Promise的一个实例。兑现承诺后,字符串数据将可用。因此,在您的JS中,必须在诺言解决后提出发布请求。请参阅以下JS代码,
function store_token(token) {
if (token instanceof Promise) {
token.then(tokenData => {
console.log('tokenData', tokenData);
let data = { 'reg_id': tokenData };
console.log("data", data);
// data = JSON.stringify(data);
$.post('/api_call_for_django_view', data, response => { console.log('post response', response); });
}).catch(tokenError => {
console.log('tokenError', tokenError);
});
}
}
我希望这会有所帮助。