django - Angular 和 Django 文件上传:禁止 (403) CSRF 验证失败。请求中止
问题描述
我遇到了以下问题:禁止(403)CSRF验证失败。请求中止。我正在使用 Angular 8 上传文件并将其发送到 django 进行一些操作而不保存文件,然后将 pandas DataFrame 作为 json 返回。这是角代码:
uploadDatasetFile(formData : FormData){
this._http.post(`${this.baseUrl}upload_dataset`, formData).subscribe(
(data) => {
this.dataFrame = data;
console.log(data);
},
(error) => {
console.error(error);
}
);
}
和 Django 代码:
def upload_local_dataset(request):
if request.method == 'POST':
print("Request FILES : ", request.FILES)
dataset = pd.read_csv(request.FILES.get('datasetfilepath'), header=0, index_col=None)
request.session['ts_dataset'] = dataset.to_json(orient='values')
request.session['ts_dataset_copy'] = dataset.to_json(orient='values')
return HttpResponse(dataset.to_json(orient='values'))
谢谢你的帮助。我是 Angular 和 Django 的新手,我正在做我的实习项目。
解决方案
您需要在表单请求中添加 {% csrf_token %}
<form>
{% csrf_token %}
<anything_else>
</form>
或者您可以添加
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def upload_local_dataset(request):
#stuff
推荐阅读
- python - 每 x 行添加 1 天
- firebase - 在flutter / firebase中登录后屏幕不更新
- xodus - Xodus:如何打开数据库的早期状态
- javascript - 电子邮件已发送但未收到,我正在使用 nodemailer
- python - 为什么我不能将修改后的列表存储在 Python 的新变量中?
- react-native - 在 React Navigation 中禁用自定义标题的动画
- html - 无法为引导行分配不同的样式
- flutter - 如何将 utf8 代码单元编码为 String 并读回 Flutter
- linux - 在linux系统上根据压缩文件的年份和月份创建带有文件名的压缩存档
- symfony - 使用 Doctrine 和 Symfony 5 执行迁移