Python Django会话密钥错误,如何保存从angular到Django的http跨源请求之间的Django会话状态
我有一个angular前端应用程序,它将文件发送到django后端,数据正在django会话中设置。在我向django后端发送httprequest以对该数据进行ML处理并获得结果之后。但我有一个500个严重错误:keyerror'ts\u dataset\u copy:keyerror'ts\u dataset\u copy' [24/Feb/2020 18:43:46]“GET/cv_classification/5/FOTS/283/None/0/0 HTTP/1.1”500 78264。以下是我的django代码:Python Django会话密钥错误,如何保存从angular到Django的http跨源请求之间的Django会话状态,python,django,angular,Python,Django,Angular,我有一个angular前端应用程序,它将文件发送到django后端,数据正在django会话中设置。在我向django后端发送httprequest以对该数据进行ML处理并获得结果之后。但我有一个500个严重错误:keyerror'ts\u dataset\u copy:keyerror'ts\u dataset\u copy' [24/Feb/2020 18:43:46]“GET/cv_classification/5/FOTS/283/None/0/0 HTTP/1.1”500 78264。
@csrf_exempt
def upload_local_dataset(request):
if request.method == 'POST':
dataset = pd.read_csv(request.FILES.get('datasetfilepath'), header=None, index_col=None)
request.session['ts_datset'] = dataset.to_json(orient='values')
request.session['ts_dataset_copy'] = dataset.to_json(orient='values')
print("In upload_local_dataset Session's keys : ", request.session.keys())
return HttpResponse(dataset.to_json(orient='values'))
引发服务器内部错误的第二个httrequest
问题是,当我将第二个http Cross原点从angular应用程序发送到django应用程序时,之前存储的会话元素不再存在。(我检查了upload_local_数据集中的会话密钥,并在upload_local_数据集中的会话密钥:dict_密钥(['ts_dataset','ts_dataset_copy'])中接收到)但在第二个视图中,我在cv_分类会话的密钥:dict_密钥([])中接收到一个空的dict因此熊猫的read_json抛出一个错误ValueError:无效的文件路径或缓冲区对象类型:
如何保存从angular应用到django应用的两个http交叉源之间的会话状态?
感谢您的帮助!您必须处理密钥尚未出现在会话中的情况。当我调用第二个view方法时,该密钥已由第一个方法upload_local_dataset()创建,显然这正是您的期望。
def cv_classification(request, kfolds, dissimilarity_func, windows_length=0, noisy_law="", mu=0,
std=0):
noisy_law = noisy_law.lower()
print("In cv_classification Session's keys : ", request.session.keys())
df = pd.read_json(request.get('ts_dataset_copy'), orient='values')
predictions = cv_classify(df, kfolds, dissimilarity_func, windows_length, noisy_law, mu, std)
return JsonResponse(predictions, safe=False)