我不知道如何使用 Django Rest post angular 在数据库 (mongodb) 中输入表单数据 API
I cant figure out how to post angular's input form data in database (mongodb) using Django Rest API
我不知道如何使用 Django Rest post angular 在数据库 (mongodb) 中输入表单数据 API。互联网上没有足够的关于 django 和 angular 以及 mongodb 的教程和文档。或者也许我现在有远见。如果有人有 link 可以解决我的问题,那就太好了。
下面是我的 angular 的 html 文件,您可以在其中看到表格
<form (ngSubmit)="onSubmit()">
<div class="form-group">
<label for="InputAttackTitle">Attack Title</label>
<input ngModel type="text" class="form-control" name="AttackTitle" id="InputAttackTitle" placeholder="Enter Attack Title">
</div>
<div class="form-group">
<label for="InputAttackDescripton">Attack Description</label>
<textarea ngModel class="form-control" name="AttackDescription" id="InputAttackDescripton" placeholder="Enter Attack Description" ></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<br>
</div>
这里可以看到component.ts文件
export class IconsComponent implements OnInit {
form: FormGroup;
constructor(config: NgbModalConfig, private modalService: NgbModal,private http:HttpClient, public fb:FormBuilder)
{
config.backdrop = 'static';
config.keyboard = false;
this.form = this.fb.group({
AttackTitle: [''],
AttackDescription: [null]
})
}
AttackTitle:any;
AttackDescription:any;
onSubmit(){
var formData:any = new FormData();
formData.append("AttackTitle",this.form.get('AttackTitle').value);
formData.append("AttackDescription",this.form.get('AttackDescription').value);
this.http.post('http://127.0.0.1:8000/attackinfo', formData).subscribe(
(response) => {
return console.log(response);
},
(error) => console.log(error)
)
下面是django的模型class
class AttackInfo(models.Model):
AttackTitle=models.CharField(max_length=70, blank=False)
AttackDescription = models.TextField(default='',blank=False)
下面是视图文件
@csrf_exempt
def AttackInfoAPI(request,id=0):
if request.method=='GET':
attackinfo = AttackInfo.objects.all()
attackinfo_serializer=AttackInfoSerializer(attackinfo,many=True)
return JsonResponse(attackinfo_serializer.data,safe=False)
elif request.method=='POST':
attackinfo_data=JSONParser().parse(request)
attackinfo_serializer=AttackInfoSerializer(data=attackinfo_data)
if attackinfo_serializer.is_valid():
attackinfo_serializer.save()
return JsonResponse("Added Successfully",safe=False)
return JsonResponse("Failed to Add",safe=False)
还有一件事,get 请求工作正常,我只遇到 Post 请求的问题,可能是因为我只是初学者(所以我很抱歉 XD)
下面是URL代码
urlpatterns=[
re_path(r'^attackinfo$',views.AttackInfoAPI),
re_path(r'^attackinfo/([0-9]+)$',views.AttackInfoAPI),
由于您没有添加显示错误的日志记录,以下是基于假设....
在 Django 中,您希望主体采用 JSON 格式,http.post 调用中使用的 FormData 也应采用 JSON 格式。
可能可以通过将 post 调用更改为:
来实现
this.http.post('http://127.0.0.1:8000/attackinfo', JSON.stringify(formData)).subscribe
我不知道如何使用 Django Rest post angular 在数据库 (mongodb) 中输入表单数据 API。互联网上没有足够的关于 django 和 angular 以及 mongodb 的教程和文档。或者也许我现在有远见。如果有人有 link 可以解决我的问题,那就太好了。
下面是我的 angular 的 html 文件,您可以在其中看到表格
<form (ngSubmit)="onSubmit()">
<div class="form-group">
<label for="InputAttackTitle">Attack Title</label>
<input ngModel type="text" class="form-control" name="AttackTitle" id="InputAttackTitle" placeholder="Enter Attack Title">
</div>
<div class="form-group">
<label for="InputAttackDescripton">Attack Description</label>
<textarea ngModel class="form-control" name="AttackDescription" id="InputAttackDescripton" placeholder="Enter Attack Description" ></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<br>
</div>
这里可以看到component.ts文件
export class IconsComponent implements OnInit {
form: FormGroup;
constructor(config: NgbModalConfig, private modalService: NgbModal,private http:HttpClient, public fb:FormBuilder)
{
config.backdrop = 'static';
config.keyboard = false;
this.form = this.fb.group({
AttackTitle: [''],
AttackDescription: [null]
})
}
AttackTitle:any;
AttackDescription:any;
onSubmit(){
var formData:any = new FormData();
formData.append("AttackTitle",this.form.get('AttackTitle').value);
formData.append("AttackDescription",this.form.get('AttackDescription').value);
this.http.post('http://127.0.0.1:8000/attackinfo', formData).subscribe(
(response) => {
return console.log(response);
},
(error) => console.log(error)
)
下面是django的模型class
class AttackInfo(models.Model):
AttackTitle=models.CharField(max_length=70, blank=False)
AttackDescription = models.TextField(default='',blank=False)
下面是视图文件
@csrf_exempt
def AttackInfoAPI(request,id=0):
if request.method=='GET':
attackinfo = AttackInfo.objects.all()
attackinfo_serializer=AttackInfoSerializer(attackinfo,many=True)
return JsonResponse(attackinfo_serializer.data,safe=False)
elif request.method=='POST':
attackinfo_data=JSONParser().parse(request)
attackinfo_serializer=AttackInfoSerializer(data=attackinfo_data)
if attackinfo_serializer.is_valid():
attackinfo_serializer.save()
return JsonResponse("Added Successfully",safe=False)
return JsonResponse("Failed to Add",safe=False)
还有一件事,get 请求工作正常,我只遇到 Post 请求的问题,可能是因为我只是初学者(所以我很抱歉 XD)
下面是URL代码
urlpatterns=[
re_path(r'^attackinfo$',views.AttackInfoAPI),
re_path(r'^attackinfo/([0-9]+)$',views.AttackInfoAPI),
由于您没有添加显示错误的日志记录,以下是基于假设....
在 Django 中,您希望主体采用 JSON 格式,http.post 调用中使用的 FormData 也应采用 JSON 格式。 可能可以通过将 post 调用更改为:
来实现this.http.post('http://127.0.0.1:8000/attackinfo', JSON.stringify(formData)).subscribe