Примечание: я не хочу использовать FormData, хочу использовать FormControl, если это возможно.
У меня есть форма, которая отправляет некоторые данные на сервер Django, и он обрабатывает их и сохраняет данные.
Вот моя Django функция
def create(self, request):
company = CompanyForm(request.data, request.FILES)
if company.is_valid():
company = company.save()
serializer = CompanySerializer(company)
return JsonResponse(request.data, safe=False)
else:
return JsonResponse(request.errors, safe=False)
Это Angular Форма
<form [formGroup]="companyForm" id="ngForm" enctype="multipart/form-data"
#documentEditForm="ngForm" (ngSubmit)="CreateCompany()">
//Some other fields.
<mat-form-field>
<ngx-mat-file-input formControlName="com_logo" placeholder="Logo"></ngx-mat-file-input>
<mat-icon matSuffix>folder</mat-icon>
</mat-form-field>
</form>
Как видите, я использую ngx-mat-file-input
для обработки входного файла
вот коды компонентов для FormControl
companyForm = new FormGroup({
com_name: new FormControl('', Validators.required),
com_owner: new FormControl('', Validators.required),
com_phone: new FormControl('', Validators.required),
com_address: new FormControl(),
com_email: new FormControl(),
com_status: new FormControl(),
com_website: new FormControl(),
com_logo: new FormControl(),
});
// From Array of errors to show on front end.
formErrors: any = {}
CreateCompany(): void {
this.apiService.createItem(this.companyForm.value, 'company').subscribe(
result => {},
error => {}
);
}
Когда я проверял консоль, я отправлял информацию об изображении на сервер, но когда я возвращал request.FILES
on Django пусто.
{com_name: "Pomtech", com_owner: "JSsss", com_phone: "072044920", com_address: "9170 N. Beacon Rd",…}
com_name: "Pomtech"
com_owner: "JSsss"
com_phone: "072044920"
com_address: "9170 N. Beacon Rd"
com_email: "n.karimi@gmail.com"
com_status: null
com_website: null
com_logo: {_files: [{}], delimiter: ", ", _fileNames: "employer-13.png"}
_files: [{}]
delimiter: ", "
_fileNames: "employer-13.png"
Также я использую DjangoResetFramework, если помогу.
Так что плохого в том, чтобы отправлять данные файла в Django и сохранять это?