django - Angular - 注册用户时出现 Django REST api“错误请求”错误
问题描述
标题##我正在尝试将学生和老师的注册数据从 Angular 发送到 django rest api。当我在注册学生时收到“错误请求”错误时,老师能够成功注册。通过邮递员发送请求一切正常
错误
:
HttpErrorResponse {headers: HttpHeaders, status: 400, statusText: "Bad
## Heading ##Request", url: "http://localhost:8000/auth/student/", ok: false, …}
学生注册组件.ts
import { Component, OnInit } from '@angular/core';
import { AuthService } from '../../services/auth.service';
@Component({
selector: 'app-student-register',
templateUrl: './student-register.component.html',
styleUrls: ['./student-register.component.css']
})
export class StudentRegisterComponent implements OnInit {
registerStudentData = {}
constructor(private _auth: AuthService) { }
ngOnInit() {
}
registerStudent(){
this._auth.registerStudent(this.registerStudentData)
.subscribe(
res => console.log(res),
err => console.log(err)
)
}
}
auth.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class AuthService {
private _registerTeacherUrl = "http://127.0.0.1:8000/auth/teacher/"
private _registerStudentUrl = "http://localhost:8000/auth/student/"
private _loginTeacherUrl = ""
private _loginStudentUrl = ""
constructor(private http:HttpClient) { }
registerTeacher(teacher){
return this.http.post<any>(this._registerTeacherUrl, teacher)
}
registerStudent(student){
return this.http.post<any>(this._registerStudentUrl, student)
}
}
视图.py
from authapi.serializers import TeacherSerializer, StudentSerializer
from authapi.models import Teacher, Student
from django.http import Http404
from rest_framework.views import APIView
from rest_framework import status
from rest_framework.response import Response
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
# Create your views here.
class TeacherList(APIView):
"""
List all teachers, or create a new teacher.
"""
def get(self, request, format=None):
teachers = Teacher.objects.all()
serializer = TeacherSerializer(teachers, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = TeacherSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data,
status=status.HTTP_201_CREATED)
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
class TeacherDetail(APIView):
"""
Retrieve, update or delete a teacher instance.
"""
def get_object(self, pk):
try:
return Teacher.objects.get(pk=pk)
except Teacher.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
snippet = self.get_object(pk)
serializer = TeacherSerializer(snippet)
return Response(serializer.data)
def put(self, request, pk, format=None):
snippet = self.get_object(pk)
serializer = TeacherSerializer(snippet, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk, format=None):
snippet = self.get_object(pk)
snippet.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
class StudentList(APIView):
def get(self, request, format=None):
students = Student.objects.all()
serializer = StudentSerializer(students, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = StudentSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data,
status=status.HTTP_201_CREATED)
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
class StudentDetail(APIView):
def get_object(self, pk):
try:
return Student.objects.get(pk=pk)
except Student.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
snippet = self.get_object(pk)
serializer = StudentSerializer(snippet)
return Response(serializer.data)
def put(self, request, pk, format=None):
snippet = self.get_object(pk)
serializer = StudentSerializer(snippet, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk, format=None):
snippet = self.get_object(pk)
snippet.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
序列化程序.py
from rest_framework import serializers
from rest_framework.validators import UniqueValidator
from authapi.models import Teacher, Student
class TeacherSerializer(serializers.ModelSerializer):
class Meta:
model = Teacher
# fields = '__all__'
fields = ('name', 'subject', 'couchingCode', 'mobile', 'password')
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
# fields = '__all__'
fields = ('name', 'studentClass', 'couchingCode', 'mobile', 'password', 'batch_id')
解决方案
推荐阅读
- android - 为什么我现在的App没有界面?
- javascript - 如何在 b-form-input 中显示默认值?在 Vue 中
- typescript - 根据 TypeScript 中的参数动态生成返回类型
- android - 我在 firebase 控制台中看不到 android 的崩溃报告
- camera-calibration - 使用 HALCON 进行 3D 三角测量
- visual-studio-code - 在 VSCode 上美化 c++ 文件
- ruby-on-rails - OmniAuth::Strategies::OAuth2::CallbackError 发生
- javascript - Fullcalendar - 固定宽度事件:左对齐
- python - 如何仅获取父类对象的属性
- ios - 有没有办法从我的主类连接或访问我的“scrollView”到另一个类?