[Westagram] 포스팅, 댓글달기

Nina·2020년 10월 11일
0

Westagram

목록 보기
2/2
post-thumbnail

1. App 생성


포스팅/댓글과 관련된 새로운 앱을 생성한 뒤 settings.py의 INSTALLED_APPS에 추가

2. models.py

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'

3. views.py

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
        )

4. urls.py

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())    
]

5. 결과

(1) 사진 업로드, 업로드된 (전체) 사진 보기


(2) 댓글 달기, (사진별로) 댓글 보기


(3) 좋아요

profile
https://dev.to/ninahwang

0개의 댓글