Django로 간단한 ToDo API 만들기

이 자습서에서는 Python 3 및 Django 2를 사용하여 간단한 todo API를 만듭니다.

요구 사항 설치



가상 환경을 만들고 Django를 설치합니다.

$ virtualenv venv # creates a virtual environment
$ source venv/bin/activate # activates the virtual environment
(venv)$ pip install Django


그게 지금 필요한 전부입니다.

프로젝트 생성



Djangostartproject 명령을 사용하여 작업할 프로젝트를 만듭니다.

$ django-admin startproject todoapi


이렇게 하면 생성된 파일이 있는 todoapi 디렉토리가 생성되어 시작합니다. 디렉토리는 다음과 같아야 합니다.

manage.py
todoapi/
    __init__.py
    settings.py
    urls.py
    wsgi.py


데이터베이스 설정



작업을 간단하게 유지하기 위해 SQlite 데이터베이스를 사용하므로 Python과 함께 제공되므로 아무것도 설치할 필요가 없습니다. 또한 todoapi/settings.py에 이미 설정되어 있습니다. 코드를 살펴보면 다음과 유사한 내용이 표시됩니다.

# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


모델 생성



데이터베이스용 모델을 만들려면 먼저 todos "앱"을 만들어야 합니다. 여기에서 기능을 구현할 것입니다.

$ python manage.py startapp todos


그러면 다음 파일이 포함된 todos 디렉토리가 생성됩니다.

migrations/
    __init__.py
__init__.py
admin.py
apps.py
models.py
tests.py
views.py


이 앱은 todoapi/settings.py에 추가되어야 합니다.

INSTALLED_APPS = [
    ...,
    'todos'
]


이제 Django가 우리 앱에 대해 알았으니 models.py 파일을 열어 모델을 추가합니다. Todo라는 하나의 모델만 생성합니다.

from django.db import models


# Create your models here.
class Todo(models.Model):
    todo = models.CharField(max_length=100, null=False,
                            help_text="This field is required")
    done = models.BooleanField(default=False)


이 모델은 데이터를 저장하기 위해 tododone 열이 있는 테이블을 생성합니다. todo 열은 실제 할 일을 저장하고 done 열은 상태(완료 여부)를 저장합니다. BooleanField 입니다. 즉, 완료되면 True 를 저장하고 완료되지 않으면 False 를 저장합니다. 이것이 기본값입니다.

이제 우리가 해야 할 일은 makemigrations를 실행하여 Django에 모델을 알리고 migrate 실제 마이그레이션을 수행하는 것입니다.

$ python manage.py makemigrations todos
$ python manage.py migrate


끝점 만들기



지금은 두 개의 엔드포인트가 있습니다.
  • /todos ~ GET 모든 할일 목록
  • /todos/<id> to GET id
  • 와 일치하는 todo

    이를 테스트하기 위해 todos/view.py 파일에 두 개의 간단한 보기를 생성합니다.

    from django.http import JsonResponse
    from django.shortcuts import get_object_or_404
    
    from .models import Todo
    
    # Create your views here.
    def todos(request):
        todos_list = Todo.objects.all()
        data = {
            "todos": list(todos_list.values(
                "todo", "done"
            ))
        }
        return JsonResponse(data)
    
    def single_todo(request, pk):
        todo = get_object_or_404(Todo, pk=pk)
        data = {
            "todo": todo.todo,
            "done": todo.done
        }
        return JsonResponse(data)
    

    urls.py 앱에서 todos라는 새 파일을 만들고 다음 코드를 추가합니다.

    # todos/urls.py
    from django.urls import path
    
    from .views import todos, single_todo
    
    urlpatterns = [
        path("todos/", todos, name="todos"),
        path("todos/<int:pk>", single_todo, name="single_todo")
    ]
    

    todoapi/urls.py로 이동하여 방금 만든 todos URL을 포함합니다.

    # todoapi/urls.py
    from django.contrib import admin
    from django.urls import path, include  # add include here
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include('todos.urls'))  # add this
    ]
    


    관리자 설정 및 엔드포인트 테스트



    수퍼유저를 생성합니다.

    $ python manage.py createsuperuser
    


    다음으로 관리자 대시보드에서 모델에 액세스할 수 있도록 /todos/admin.py 파일에 모델을 등록합니다.

    from django.contrib import admin
    from .models import Todo
    
    # Register your models here.
    admin.site.register(Todo)
    


    그게 다야! 이제 서버를 실행하고 http://127.0.0.1:8000/admin로 이동합니다. 할 일을 추가하려면 위의 수퍼유저에 대해 등록한 세부 정보로 로그인하십시오.





    끝점을 통해 나머지 클라이언트를 통해 생성된 todos를 검색할 수 있습니다.
  • http://127.0.0.1:8000/todos
  • http://127.0.0.1:8000/todos/<id>
  • 좋은 웹페이지 즐겨찾기