#django #angular #api
Вопрос:
Я использую Django в качестве своего API и пытаюсь загрузить Pdf-файл из Angular. Я использовал HttpModule для публикации файла с именем, компанией, годом и документом
Я протестировал URL-адрес публикации на Postman, и он работает ссылка на API postman, показывающая, что запрос на публикацию был успешным
Когда я нажимаю кнопку загрузить, на вкладке Сеть нет активности и нет вывода на консоль
Это мой API Django
url.py
router = routers.DefaultRouter()
router.register(r'reports', views.ReportViewSet)
urlpatterns = [
path('', include(router.urls)),
url(r'^upload/
serializers.py
from .models import Report
class ReportSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Report
fields = ('name', 'company', 'year', 'document')
Угловой код в app.component.ts
export class AppComponent {
title = 'angular-frontend'
name!: string;
company!: string;
year!: string;
document!: File;
constructor(private http: HttpClient) { }
onNameChanged(event: any) {
this.name = event.target.value;
}
onCompanyChanged(event: any) {
this.company = event.target.value
}
onYearChanged(event: any) {
this.year = event.target.value
}
onDocumentChanged(event: any) {
this.document = event.target.files[0];
}
Upload() {
const uploadData: FormData = new FormData();
uploadData.append('name', this.name);
uploadData.append('company', this.company);
uploadData.append('year', this.year);
uploadData.append('document', this.document);
this.http.post('http://127.0.0.1:8000/api/reports/', uploadData).subscribe(
data => console.log(data),
error => console.log(error)
)
}
}
app.component.html
<label>
Name:
<input type="text" (change)="onNameChanged($event)" />
</label>
<br />
<label>
Company:
<input type="text" (change)="onCompanyChanged($event)" />
</label>
<br />
<label>
Year:
<input type="text" (change)="onYearChanged($event)" />
</label>
<br />
<label>
Document:
<input type="file" (change)="onDocumentChanged($event)" />
</label>
<br />
<button type="submit" ng-click="Upload()">Upload</button>
Комментарии:
1. Попробуйте перейти с ng-click на (нажмите) <тип кнопки="Отправить" (нажмите)="Загрузить()">Загрузить<тип кнопки="Отправить" (нажмите)="Загрузить()"></кнопка> Я считаю, что ng-click исходит от AngularJS, а не от углового
2. Я использовал (нажмите), но у меня то же самое, на вкладке "Сеть" нет активности, не уверен, что щелчок вызывает метод загрузки() для ПУБЛИКАЦИИ
, TestUploadView.as_view(), name='upload'),
#path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
] static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
serializers.py
Угловой код в app.component.ts
app.component.html
Комментарии:
1. Попробуйте перейти с ng-click на (нажмите) <тип кнопки=»Отправить» (нажмите)=»Загрузить()»>Загрузить<тип кнопки=»Отправить» (нажмите)=»Загрузить()»></кнопка> Я считаю, что ng-click исходит от AngularJS, а не от углового
2. Я использовал (нажмите), но у меня то же самое, на вкладке «Сеть» нет активности, не уверен, что щелчок вызывает метод загрузки() для ПУБЛИКАЦИИ