Django 안에서 RESTful API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리
작업할 폴더 생성 후, 명령어
> python -m venv venv
venv 폴더 생성될 것
> cd ./venv/Scripts
> activate
프로젝트 경로로 돌아가서 장고 설치
> pip install django
다운 받은 항목들을 requirements.txt 파일로 만든다
> pip freeze > requirements.txt
프로젝트 생성
> django-admin startproject restapi(프로젝트명) .
맨뒤에 꼭 . 을 붙여야
venv랑 같은 레벨의 위치에 manage.py 파일이 생성됨
> pip install djangorestframework
실제 장고 서버와 REST 서버는 따로 운영이 되어야 함.
또 다른 프로젝트 생성
> python manage.py startapp post
INSTALL_APPS 에
rest_framework post(app) 추가
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'post',
]
from django.db import models
# Create your models here.
class Post(models.Model):
id = models.AutoField(db_column='id', primary_key=True) # 쓰지 않아도 장고는 자동 id 생성해줌
writer = models.ForeignKey('user.User', on_delete=models.CASCADE, related_name='post')
title = models.CharField(max_length=100, blank=False, null=False)
content = models.CharField(max_length=500)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.id) + ' ' + self.title
class Meta:
ordering = ['created_at']
모델을 수정한 경우 Django에서는 makemigration과 migrate를 해주어야 한
python manage.py makemigrations post
python manage.py migrate post
post(app)에 serializers.py 추가
-> 객체와 같은 데이터를 JSON이나 XML처럼 쉽게 데이터를 바꾸어 통신할 수 있게 해주는 역할
class PostDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ['writer', 'title', 'content']
이어서 생성한 모델에 값을 입력해준다. 장고는 터미널 상에서 manage.py shell 기능으로 편하게 DB를 수정할 수 있다.
$ python manage.py shell
>>> from post.models import Post
>>> Post.objects.create(~)
<Post: Post object (1)>
>>> Post.objects.all()
from django.urls import include, path
from rest_framework.routers import DefaultRouter
from . import views
urlpatterns = [
path('', views.PostViewSet.post), # 자동으로 url 생성
path('<int:post_id>', views.PostOneViewSet.post),
path('comments', views.CommentViewSet.comment),
path('comments/<int:comment_id>', views.CommentOneViewSet.comment),
]
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('post/', include('post.urls'))
]
스프링부트만 공부하다 다시 장고하니 넘나 신기
관리자페이지 짱~.~..