포스팅/댓글과 관련된 새로운 앱을 생성한 뒤 settings.py의 INSTALLED_APPS에 추가
from django.db import models
from django.utils import timezone
# Create your models here.
class Posting(models.Model):
user = models.ForeignKey('user.User', on_delete=models.CASCADE)
upload_time = models.DateTimeField(auto_now=True)
img = models.ImageField(upload_to=None, height_field=None, width_field=None)
description = models.TextField(null=True)
class Meta():
db_table = 'postings'
class Comment(models.Model):
user = models.ForeignKey('user.User', on_delete=models.CASCADE)
post = models.OneToOneField(Posting, on_delete=models.CASCADE)
upload_time = models.DateTimeField(auto_now=True)
content = models.TextField()
class Meta():
db_table = 'comments'
class Like(models.Model):
post = models.ForeignKey(Posting, on_delete=models.CASCADE)
user = models.ForeignKey('user.User', on_delete=models.CASCADE)
class Meta():
db_table = 'likes'
import json
from django.http import JsonResponse
from django.views import View
from posting.models import Posting, Comment, Like
from user.models import User
# Create your views here.
class UploadView(View):
def post(self, request):
data = json.loads(request.body)
Posting(
user = User.objects.get(id=data['user']),
img = data['img'],
description = data['description'],
upload_time = data['upload_time']
).save()
return JsonResponse(
{'MESSAGE': 'UPLOAD_SUCCESS'},
status=201)
class ShowView(View):
def get(self, request):
all_posts = Posting.objects.all().values()
post_list = []
for post in all_posts:
post_list.append(post)
return JsonResponse(
{'MESSAGE':post_list},
status = 200
)
class UploadCommentView(View):
def post(self, request):
data = json.loads(request.body)
Comment(
user = User.objects.get(id=data['user']),
post = Posting.objects.get(id=data['post']),
upload_time = data['upload_time'],
content = data['content']
).save()
return JsonResponse(
{'MESSAGE': 'UPLOAD_SUCCESS'},
status=201)
class ShowCommentView(View):
def get(self, request):
data = json.loads(request.body)
comments = Comment.objects.filter(post_id = data['post']).values()
comment_list = []
for com in comments:
comment_list.append(com)
return JsonResponse(
{'MESSAGE': comment_list},
status = 200
)
class LikeView(View):
def post(self, request):
data = json.loads(request.body)
Like(
post = Posting.objects.get(id=data['post']),
user = User.objects.get(id=data['user'])
).save()
return JsonResponse(
{'MESSAGE':'SUCCESS'},
status=201
)
from posting.views import UploadView, ShowView, UploadCommentView, ShowCommentView, LikeView
urlpatterns = [
path('posting/upload', UploadView.as_view()),
path('posting/show', ShowView.as_view()),
path('comment/upload', UploadCommentView.as_view()),
path('comment/show', ShowCommentView.as_view()),
path('like', LikeView.as_View())
]