TIL no.55 - Django - Example - 1

박준규·2019년 10월 22일
0

Django

목록 보기
23/30

지금까지 공부한 내용을 베이스로
Model을 만들고 View 로직을 구현하고
url을 연결하는 예제를 해보겠습니다.


example이라는 가상환경을 만들고
django를 설치한 뒤
example이라는 프로젝트를 만들었다는 가정하에 시작하겠습니다.


request를 json data로 받아 데이터베이스에 존재하는 유저인지 확인하는
End Point를 만들어보겠습니다.


1. project example

먼저, 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 받을 수 있습니다.

profile
devzunky@gmail.com

0개의 댓글