
from django.db import models
class Accounts(models.Model):
email = models.EmailField(max_length=50)
name = models.CharField(max_length=50)
password = models.CharField(max_length = 300)
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
class Meta:
db_table = 'accounts'
import json
from django.http import JsonResponse
from django.views import View
from .models import Accounts
class SignUp(View):
def post(self, request):
data = json.loads(request.body)
try:
if '@' not in data['email'] or '.' not in data['email']:
return JsonResponse({'message':'이메일주소 @ 를 넣어주세요 '},status =400)
if len(data['password']) < 8:
return JsonResponse({'message':'비밀번호가 너무 짧습니다(최소 8자이상)'},status=400)
if Accounts.objects.filter(email=data['email']).exists():
return JsonResponse({'message' : '이미 존재하는 아이디입니다.'},status=401)
else:
Accounts(
email = data['email'],
name = data['name'],
password = password_crypt,
).save()
return JsonResponse({'message': '회원가입완료'},status=201)
except Exception as ex:
return JsonResponse({'error': f'{ex}'},status=400)
class Login(View):
def post(self, request):
data = json.loads(request.body)
try:
user = Accounts.object.get(email=data[email])
user_ckeck = Accounts.objects.filter(
name=user.name,
email = user.email,
password = user.password
)
if user_ckeck.exists():
return JsonResponse({'message':'SUCCESS'}, status = 200)
except Accounts.DoesNotExist:
return JsonResponse({'message':'NO EXIST USER'}, status = 401)
위의 .save() 와 똑같은 코드
Accounts.objects.create( email = data['email'], name = data['name], password = data['password'] )
from django.urls import path
from .views import SignUp
urlpatterns =[
path('signup/',SignUp.as_view()),
path('login/',Login.as_view()),
]
class Post(View):
def post(self, request):
data = json.loads(request.body)
try:
#-----게시물 올리기-----#
user = Accounts.objects.filter(name=data['name'],email=data['email'])
if user.exists():
Broads.objects.create(
title = data['title'],
photo = data['photo'],
name = Accounts.objects.get(name=data['name'],email=data['email']),
)
return JsonResponse({'message':'게시물 업로드 완료'},status=200)
return JsonResponse({'message':'로그인이 필요합니다'},status=400)
except Exception as ex:
return JsonResponse({'error':f'{ex}'},status=400)
def get(self,request):
broad_data = Broads.objects.values()
return JsonResponse({'Accounts':list(broad_data)},status=200)
class Comment(View):
def post(self, request):
data = json.loads(request.body)
try :
user = Accounts.objects.filter(name=data['name'],email=data['email'])
if user.exists():
Comments.objects.create(
content = data['content'],
name = Accounts.objects.get(name=data['name']),
broad = Broads.objects.get(id=data['post_id'])
)
return JsonResponse({'message':'댓글 등록'},status=200)
else:
return JsonResponse({'error':'등록된 유저가 아닙니다, 로그인해주세요'},status=401)
except Exception as ex:
return JsonResponse({'error':f'{ex}'},status=400)
class Broads(models.Model):
title = models.CharField(max_length=200)
photo = models.ImageField(blank=True)
name = models.ForeignKey('user.Accounts',on_delete=models.CASCADE)
created = models.DateTimeField(auto_now=True)
updated = models.DateTimeField(auto_now_add=True)
class Meta:
db_table = 'broads'
class Comments(models.Model):
name = models.ForeignKey('user.Accounts',on_delete=models.CASCADE)
broad = models.ForeignKey('Broads',on_delete=models.CASCADE)
content = models.TextField(null=True)
created = models.DateTimeField(auto_now=True)
updated = models.DateTimeField(auto_now_add=True)
class Meta:
db_table = 'comments'
from django.urls import path
from .views import Post, Comment,
urlpatterns =[
path('post/',Post.as_view()),
path('comment/',Comment.as_view()),
]
회원가입 / 로그인 페이지 , 댓글 / 게시물 페이지 는 비슷한 방법으로 구현가능합니다!