지금까지 공부한 내용을 베이스로
Model을 만들고 View 로직을 구현하고
url을 연결하는 예제를 해보겠습니다.
example이라는 가상환경을 만들고
django를 설치한 뒤
example이라는 프로젝트를 만들었다는 가정하에 시작하겠습니다.
request를 json data로 받아 데이터베이스에 존재하는 유저인지 확인하는
End Point를 만들어보겠습니다.
먼저, user라는 앱을 만듭니다.
$ python manage.py startapp user
그리고 user를 settings.py에서 등록해줍니다.
INSTALLED_APPS = [
#'django.contrib.admin',
#'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'user',
]
그리고 model을 정의해줍니다.
from django.db import models
class Users(models.Model):
name=models.CharField(max_length=100)
email=models.CharField(max_length=400)
password=models.CharField(max_length=400)
class Meta:
db_table='users_info'
그리고 view 로직을 구현합니다.
import json
from django.http import JsonResponse
from django.views import View
from .models import Users
class UserView(View):
def post(self, request):
requested_user_data = json.loads(request.body)
if Users.objects.filter(email=requested_user_data['email']).exists():
user_in_db=Users.objects.get(email=requested_user_data['email'])
if user_in_db.name==requested_user_data['name'] and user_in_db.password==re quested_user_data['password']:
return JsonResponse({'message':'SUCCESS'}, status=200)
else:
return JsonResponse({'message':'INVALID_USER'}, status=401)
else:
return JsonResponse({'message':'NOT_SIGN_UP_CUSTOMER'}, status=401)
마지막으로 url mapping을 해줍니다.
#example/urls.py
from django.urls import path, include
urlpatterns = [
path('user', include('user.urls')),
]
#user/urls.py
from django.urls import path, include
from .views import UserView
urlpatterns = [
path('', UserView.as_view()),
]
makemigrations와
$python manage.py makemigration user
migrate를 한 뒤에
$python manage.py migrate user
shell을 실행시킵니다.
$python manage.py shell
model을 import 한 뒤
>>> from user.models import Users
DB에 record를 하나 생성합니다.
>>> Users.objects.create(name='junkyu', email='devzunky@gmail.com', password='1234')
이제 DB에 record하나가 있는 상태니 View 로직이 제대로 돌아가고 있는지 확인해봅니다.
runserver를 해준뒤
$python manage.py runserver
httpie를 이용해서 json data type으로 데이터를 보내줍니다.
$ http -v POST localhost:8000/user name=junkyu email=devzunky@gmail.com pawssword=1234
이렇게 실행해주면 UserView의 로직에 따라 json data type의 자료를 return 받을 수 있습니다.