Django, djangorestFramework 설치

이도현·2023년 8월 11일
0

Django 공부

목록 보기
2/8

1. 프로젝트 생성

  • django를 관리하기 위한 세가지 방법
django-admin[options]: 관리작업을 위한 커맨드 라인

django -m django [options]

django [manage.py](http://manage.py) [options]
  • djnago의 주요 command

startapp: 앱을 생성한다

runserver: 서버를 실행한다

createsuperuser: 관리자를 생성한다

makemigrations app: app의 모델 변경사항을 체크한다

migrate: 변경 사항을 DB에 반영한다

shell: 쉘을 통해 데이터를 확인한다.

cellectstatic: 정적자원(css,html 등) 재수집(동기화)
  • 프로젝트 생성후 가상환경이 잘 잡혀있는지 확인이 필요하다

(pycharm)file → settings → python interpreter → 톱니바퀴 → venv 설정 후 ok

2. 프로젝트 설정

  • project/settings: 접속 호스트
ALLOWED_HOSTS = ['ip주소','url주소']
ALLOWED_HOSTS = ['*'] # AWS에 올린다던지 내 컴퓨어터에서 서버를 띄우고 학교 등 접속이 가능
  • runserver는 개발보드로 “http://localhost”로 되어 있으므로 Run Configrations 에서 runserver만 있던 부분에서 뒤에 옵션 뒤에 0.0.0.0:8000 추가

or /> python manage.py runserver 0.0.0.0:8000

  • pip install djangorestframework
  • pip install markdown # markdown support for the browsable API
  • pip install django-filter # Filtering support
INTSALLED_APP = [
	'rest_framework',
]

urlpatterns = [
	path('api-auth/', include(rest_framework.urls'))
]

REST_FRAMEWORK = {
	'DEFAULT_PERMISSIONI_CLASSED': [
		'rest_framework.permissions.DjangoModelPermissionOrAnonReadOnly'
	]
} # pagination의 크기를 지정할 수도 있고, API 접근권한을 지정할 수 도 있다.

3. 공식문서 Example

1) example/url.py

from django.contrib.auth.models import User
from django.urls import include, path
from rest_framework import routers, serializers, viewsets

# Serializers define the API representation 모델 데이터를 JSON 등의 직렬화된 형식으로 변환
class User Serializer(serializers.HyperLinkedModelSerializer):
	class Meta:
		model = User
		fields = ['url', 'username', 'email', 'is_staff']

# ViewSets define the view behavior 모델의 데이터를 조회, 생성, 업데이트 삭제하는 API 뷰의 동작
class UserViewSet(viewsets.ModelViewSet):
	queryset = User.object.all()
	serializer_class = UserSerializer

#Routers provide a way of automatically determining the URL conf. 
# UserViewSet 뷰셋을 users URL에 등록합니다. 이렇게하면 users/ URL을 통해 User 모델의 데이터
# 를 조회, 생성 ,업데이트, 삭제할 수 있는 API가 생성
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)

# Wire up our API using automatical URL routing
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
	path('', include(router. urls)),
	path('api-auth/', include('rest_framework.urls', namespace = 'rest_framework')),
]
  • Serializer는 모델 데이터를 직렬화하여 JSON등의 형식으로 변환하고, ViewSet은 API 동작을 정의합니다. Router를 사용하여 URL을 자동으로 연결하고, URL패턴을 설정하여 API에 대한 엔드포인트를 정의합니다.
  • 엔드포인트: 웹 서비스에서 클라이언트가 특정 리소스에 접근하기 위한 URL 경로를 의미, 엔드포인트는 웹 API의 각각의 기능 또는 엔드포인트마다 고유한 URL을 가지며, 클라이언트는 이 URL을 사용하여 서버로부터 데이터를 요청하거나 데이터를 전송

2) settings.py

INSTALLED_APPS = [
    ...  # Make sure to include the default installed apps here.
    'rest_framework',
]

REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
    ]
}
profile
좋은 지식 나누어요

0개의 댓글