Angular & Django Загрузка файла: запрещена (403) проверка CSRF. Запрос отменен - PullRequest
0 голосов
/ 10 февраля 2020

Я обнаружил следующую проблему: Запрещена (403) проверка CSRF. Запрос отменен. Я использую Angular 8 для загрузки файла и отправки его на django для некоторых манипуляций без сохранения файла, а затем возвращаю pandas DataFrame как json. Вот код Angular:

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, и я работаю над проектом моей стажировки.

1 Ответ

0 голосов
/ 10 февраля 2020

Вам необходимо добавить {% csrf_token%} в запросе формы

<form>
    {% csrf_token %}
    <anything_else>
</form>

Или вы можете добавить

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def upload_local_dataset(request):
    #stuff

к функции публикации. https://docs.djangoproject.com/en/2.2/ref/csrf/

...