Django REST Framework란? (줄여서 DRF라 부르겠습니다.)

 

DRF는 Django를 기반으로 REST API 서버를 만들기 위한 라이브러리입니다.

(장고 프로젝트에 국한해서 통신을 위해선 DRF는 필요없지만, 다양한 플랫폼 클라이언트 지원을 위해선 DRF가 필요)

장고 프로젝트에서 JSON과 같은 양식으로 다양한 플랫폼의 클라이언트에게 데이터를 제공해줄 수 있는 API 서버를 만들게 도와줍니다.

 

API를 만들기 위한 패키지는 django-rest-framework, django-tastypie, django-jsonview 등이 있지만, 대다수의 장고 프로젝트는 django-rest-framework를 쓴다고 합니다.

 

DRF의 장점

- 객체지향적이며 확장성이 뛰어나다.

- 장고의 CBV 패턴을 따른다.

- 강력한 직렬화를 지원한다.

- 인증에 있어 강력한 기능을 지원한다.

- FBV도 지원가능

 

 

<사용 버전>

python==3.8
django==3.2
djangorestframework==3.13

 

 

Python과 numpy array를 기반으로 plotting과 visualize를 목적으로 하는 라이브러리

주어진 데이터에 대해서 차트와 plot을 편리하게 그려주는 데이터 시각화 패키지이다.

 

이미지 시각화와 디버깅을 위해 사용한다.

설치 : pip install matplotlib

컴퓨터 비전을 목적으로 하는 오픈 소스 라이브러리

인텔 CPU에서 사용하는 경우 속도 향상을 볼 수 있는 IPP (Intel Performance Primitives)를 지원한다.

기존에 C++에서 사용할 수 있게 구현되었으나, OpenCV-python을 통해 python 포팅도 되어있다.

단점 : GPU Operation에 대한 지원을, 명시적으로 python과 연계하여 하지는 않는다.

설치 : pip install opencv-python

 

data_path = '../data/catanddog/train'

transform = transforms.Compose(
    [
        transforms.Resize([256, 256]),
        transforms.RandomResizedCrop(224),
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor()])

train_dataset = torchvision.datasets.ImageFolder(root=data_path, transform=transforms)
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32, shuffle=False)

iter(train_loader).next()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_14680/2615803212.py in <module>
----> 1 iter(train_loader).next()

~\anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\dataloader.py in __next__(self)
    519             if self._sampler_iter is None:
    520                 self._reset()
--> 521             data = self._next_data()
    522             self._num_yielded += 1
    523             if self._dataset_kind == _DatasetKind.Iterable and \

~\anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\dataloader.py in _next_data(self)
    559     def _next_data(self):
    560         index = self._next_index()  # may raise StopIteration
--> 561         data = self._dataset_fetcher.fetch(index)  # may raise StopIteration
    562         if self._pin_memory:
    563             data = _utils.pin_memory.pin_memory(data)

~\anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\_utils\fetch.py in fetch(self, possibly_batched_index)
     47     def fetch(self, possibly_batched_index):
     48         if self.auto_collation:
---> 49             data = [self.dataset[idx] for idx in possibly_batched_index]
     50         else:
     51             data = self.dataset[possibly_batched_index]

~\anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\_utils\fetch.py in <listcomp>(.0)
     47     def fetch(self, possibly_batched_index):
     48         if self.auto_collation:
---> 49             data = [self.dataset[idx] for idx in possibly_batched_index]
     50         else:
     51             data = self.dataset[possibly_batched_index]

~\anaconda3\envs\pytorch\lib\site-packages\torchvision\datasets\folder.py in __getitem__(self, index)
    232         sample = self.loader(path)
    233         if self.transform is not None:
--> 234             sample = self.transform(sample)
    235         if self.target_transform is not None:
    236             target = self.target_transform(target)

TypeError: 'module' object is not callable

다음과 같은 에러가 났다.

 

에러원인은... transform=transforms때문인 것.

 

transform=transform으로 바꿔주니 정상 작동한다. `s` 오타...

장고에서는 관리자 페이지를 제공해준다. 보통 로컬에선 http://127.0.0.1:8000/admin으로 접속하면 관리자 페이지에 접근할 수 있다.
이 때 권한 사용자를 super user라고 한다. 장고에서 슈퍼유저란 장고 내 모든 권한을 가진 사용자(admin)이다. 모델 및 데이터 등을 관리할 수 있다.

admin 페이지에 접근하기 위해서는 슈퍼유저 계정을 생성해줘야 한다.

 

1. 슈퍼 유저 생성하기

python manage.py createsuperuser
Username : Jay
Email address :
Password :
password (again) :

Bypass password validation and create user anyway [y/N] : y
Superuser created successfully.

2. 슈퍼 유저 비밀번호 초기화

python manage.py changepassword <유저이름>
python manage.py changepassword Jay
Password: 
Password (again):
Password changed successfully for user 'Jay'

 

비밀번호를 까먹으면 초기화해주고 다시 설정해주자.

Databricks community edition을 쓰자. 바로가기/

내가 spark를 처음 공부하는 사람이거나 찍먹정도 해보려한다 하면 커뮤니티 에디션!

일반으로 가입하면 cloud랑 묶어야하는데 돈이 나갈 수 있다고 한다.

커뮤니티는 14일 사용가능한데 구글계정 돌려막기를 하면 계속 쓸 수 있다고 한다.

 

구글계정으로 가입을 하고 나서 처음 계정 만들기를 하고 노트북을 생성하려고 한다.

PySpark를 쓸거기 때문에 언어는 Python을 선택하자.

 

Cluster에 cluster가 없다고 나온다. 일단은 그냥 만들자.

 

Detached라고 되어있는 곳을 클릭

 

그러면 Create a Cluster라고 나온다. 클릭

 

다음과같은 창이 나오는데 Databricks Runtime Version에서 ML정도만 선택해주자.

 

 

 

생성하는데 조금 시간이 걸리니 기다리자.

 

생성이 완료되면 노트북에 클러스터를 붙여서 사용하자.

거의 jupyter notebook, jupyter lab과 비슷한거같다(?)

 

 

+ 추가

cell에 %md, %sql을 붙이면 markdown하고 sql문법 사용가능

 

사용을 안해서 cluster가 Terminated되면 지우고 새로만들자. (새로 붙이는 방법을 모르겠음;;)

혹시 방법을 아시는분은 알려주세요...

 

+ Recent posts