저번에 로그인 기능에 이어 댓글 기능을 구현해보자
댓글 기능은 저번에 했던 회원가입 기능과 비슷하지만 새로 데이터베이스의 테이블과
모델파일을 새로 짜면 된다
어플의 views파일 models 파일 urls파일의 내용을 추가해주자
#models.py
from django.db import models
#...
class Comment_Data(models.Model):
name_co = models.CharField(max_length = 50)
text_co = models.CharField(max_length = 300)
created_co = models.DateTimeField(auto_now_add = True)
updated_co = models.DateTimeField(auto_now = True)
모델 파일에 새로은 DB 테이블 구성을 짜보았다
정확히는 DB의 관계형 데이터베이스를 구현해야하지만 그냥 이름과 댓글 기능만 넣어보았다
이름, 텍스트와 만든시간, 수정시간을 추가했다
그다음 views 파일에 새로운 모델이 추가가 되었음을 알린다
from django.urls import path
from .views import MainView, SignIn, Comment
urlpatterns = [
#...
path('comment/', Comment.as_view())
]
view파일의 Comment 클래스를 임포트하고
path함수를 이용해 도메인주소 comment/를 추가하고 장고의 view클래스를 상속받는다는 .as_view() 를 추가했다
완성이 된 후사이트를 찾아가려면 http://127.0.0.1:8000/mysite/comment/ 로 접속해야 할것이다
이제 urls에 정보를 보내줄 views 클래스를 만들어주자
#views.py
from django.shortcuts import render
import json
from django.views import View
from django.http import JsonResponse
from .models import Users, Comment_Data
#...
class Comment(View): # 장고의 view파일을 상속받고 클래스를 만든다
def post(self, request): # 입력을 받을 post 함수와 요청을할 값(self,request)를 만든다
data = json.loads(request.body) # 요청값을 data로 변수를 만들고
Comment_Data( # 모델파일의 테이블의 만든틀 중
name_co = data['name_co'], # name 값과
text_co = data['text_co'] # text 값을 입력 받고
).save() # 저장한다 (DB로 저장된다)
Co = Comment_Data.objects.values() # DB로 저장된 테이블의 데이터를 변수로주고
return JsonResponse({'comment':list(Co)}, status=200) # list형식으로 응답을 받는다
def get(self, request): #get 함수는 응답받는 값을 화면에 출력하기 위해 사용된다
Co = Comment_Data.objects.values() # 똑같이 변수에 데이터를 주었다
return JsonResponse({'comment':list(Co)}, status=200) # 화면에 출력하기위해 응답을 받는다
이제 httpie 로 명령을 주어 값을 입력하고 화면에 출력할수 있게 됐다
이제 런서버를 실행한뒤
터미널 창에
http -v http://127.0.0.1:8000/mysite/comment/ name_co="이름" text_co="댓글내용"
을 입력하고
http://127.0.0.1:8000/mysite/comment/ 에 접속하면 입력한 값이 화면에 출력된다