问题描述:
1、前端 angular7
2、后台 Python2.7 + django
3、报错
数据也返回了,就是接收不到,作为一个Python菜鸡,各种调试
4、请求
import {Injectable} from '@angular/core';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/toPromise';
import {beforeUrl} from '../common/public-data';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import {catchError, tap} from 'rxjs/operators';
import {Observable} from 'rxjs/Observable';
//登录
private loginUrl = 'api/login';
login(userToken: string): Observable<any> {
let httpOptions: any;
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': userToken
})
};
let url = this.loginUrl;
return this.http
.get(url,httpOptions)
.pipe(
tap((res: any) => res),
catchError((error: Response | any) => {
return Promise.reject(error);
})
);
}
5、原因
Python 内置函数repr()的锅
repr() 函数将对象转化为供解释器读取的形式。【不知道是否和javascript里的JSON.stringify()同样用法】
6、使用json.dumps()解决了此问题
Python代码
# -*- coding: utf-8 -*-
from django.http import HttpResponse
from django.shortcuts import render_to_response
import json
def login(request):
request.encoding = 'utf-8'
headers = {'Content-Type': 'application/json'}
message =json.dumps(
{"success": 200, "name": "shangyc", "password": "abc-123"}
)
return HttpResponse(message, content_type="application/json")