@api_view(['GET','**POST**'])
def index(request):
**if request.method == 'GET':**
articles = Article.objects.all()
serializer = ArticleSerializer(articles, many=True) # 소화를 해서 만들어낸 결과값
return Response(serializer.data) # .data 안에 저장
**elif request.method == 'POST':
print(request) # <rest_framework.request.Request: POST '/articles/index/'>
return Response()**
<rest_framework.request.Request: POST '/articles/index/'> print(reqeust)
그 전까지는 multipart/form-data 를 사용했었다.
print(request.POST.get("key"))
지금은 application/json
{'key': 'value'} POST 시 나오는 print
@api_view(['GET','POST'])
def index(request):
if request.method == 'GET':
articles = Article.objects.all()
serializer = ArticleSerializer(articles, many=True) # 소화를 해서 만들어낸 결과값
return Response(serializer.data) # .data 안에 저장
elif request.method == 'POST':
**print(request.data['key'])** # 키값을 입력해서 받아오고 싶다. print값은 value만 나
serializer = ArticleSerializer(request.data) # request.data를 넣어주면 된다.
return Response()
json에서 다시 article로 변경 >> deserializer
직렬화, 오브젝트형태로 되어있는 것을 스트링으로 단순하게 쭉 뽑아줬다.
You must call `.is_valid()` before calling `.save()`.
Error가 나옴. is_valid한지 확인을 해야한다.
유효한지 검증을 해야한다!!
@api_view(['GET','POST'])
def index(request):
if request.method == 'GET':
articles = Article.objects.all()
serializer = ArticleSerializer(articles, many=True) # 소화를 해서 만들어낸 결과값
return Response(serializer.data) # .data 안에 저장
elif request.method == 'POST':
# print(request.data['key'])
serializer = ArticleSerializer(request.data)
**if serializer.is_valid():
serializer.save()**
return Response()
여러 조건들이 있을 수 있다. models.py의 null=True, max_length=100 등…
조건들이 형태에 부합한지, 필요한 것들이 다 들어와 있는지 확인을 한다!
elif request.method == 'PUT':
serializer = SnippetSerializer(snippet, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
참고 사이트: https://www.django-rest-framework.org/tutorial/2-requests-and-# responses/# 최종 error 해
@api_view(['GET','POST'])
def index(request):
if request.method == 'GET':
articles = Article.objects.all()
serializer = ArticleSerializer(articles, many=True) # 소화를 해서 만들어낸 결과값
return Response(serializer.data) # .data 안에 저장
elif request.method == 'POST':
# print(request.data['key'])
serializer = ArticleSerializer(data =request.data)
if serializer.is_valid():
serializer.save()
else:
print(serializer.errors)
return Response()
해당 코드 수정 후
print 값이
{'content': [ErrorDetail(string='이 필드는 필수 항목입니다.', code='required')]}로 나온다.
string 필수항목 models 정의 할 때 null=True, blank=True
(null: db에서 빈값이여도 되는지? blank: 검증과정에서 비어있어도 되는지??)
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField(**null=True, blank=True**)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
그 후 DB를 확인해보면 정상적으로 DB에 들어가있는 것을 확인 할 수 있다.