Building APIs with Django and Django Rest Framework (readthedocs.org)
Building APIs with Django and Django Rest Framework
#2 Setup, Models and Admin
시작하기에 앞서 파이썬 가상환경을 활성화시켜주자.
$ python3 -m venv pollsapi
$ cd pollsapi/bin
$ source activate
Creating a project
앞선 튜토리얼에서 진행했던 것처럼 pollsapi 프로젝트를 시작해준다.
$ django-admin startproject pollsapi
Database setup
그냥 SQlite database를 사용할 것이다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
디폴트로 설정되어있는 것이 딱 맞다.
설정에 정해둔 것에 맞게 migrate 해준다.
Creating models
python manage.py startapp polls
모델을 만들 앱을 시작해준다.
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Poll(models.Model):
question = models.CharField(max_length=100)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
pub_date = models.DateTimeField(auto_now=True)
def __str__(self):
return self.question
class Choice(models.Model):
poll = models.ForeignKey(Poll, related_name='choices', on_delete=models.CASCADE)
choice_text = models.CharField(max_length=100)
def __str__(self):
return self.choice_text
class Vote(models.Model):
choice = models.ForeignKey(Choice, related_name='votes', on_delete=models.CASCADE)
poll = models.ForeignKey(Poll, on_delete=models.CASCADE)
voted_by = models.ForeignKey(User, on_delete=models.CASCADE)
class Meta:
unique_together = ("poll", "voted_by")
API를 개발하기 위한 방식으로 모델을 정의하였음.
Activating models
# Application definition
INSTALLED_APPS = [
'polls',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Installed_apps 리스트에 'polls'를 추가해준다.
그리고 이 변경사항을 저장해주기 위해 makemigrations, migrate를 연달아 수행한다.
이제 polls app 내부에 urls.py 파일을 만들어 빈 urlpattenrs 리스트를 만들어주고,
pollsapi/urls.py 파일에 polls url을 추가해준다.
"""pollsapi URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include, re_path
urlpatterns = [
re_path(r'^', include('polls.urls')),
path('admin/', admin.site.urls),
]
- setting up the admin
admin 파일에 poll, choice 모델을 추가해준다.
from django.contrib import admin
from .models import Poll, Choice
# Register your models here.
admin.site.register(Poll)
admin.site.register(Choice)
'Computer Science > BackEnd' 카테고리의 다른 글
Django API #2 | A simple API with pure Django (0) | 2022.09.08 |
---|---|
장고 | 장고 공식 문서 내용 정리 #1-8 Getting started : writing your first Django app, part 7 (0) | 2022.09.08 |
Django API | #0 Introductions (0) | 2022.09.06 |
장고 공식 문서 #2-1 | Using Django : Models and databases (1) | 2022.09.05 |
장고 | 장고 공식 문서 내용 정리 #1-7 Getting started : writing your first Django app, part 6 (0) | 2022.09.03 |