본문 바로가기
프로그래밍/Python & Django

[파이썬인강]8주차 Rest API 및 Serializer 마지막 후기

by Cloud_Park 2022. 1. 4.

2021.11.11 - [분류 전체보기] - IT 기업 2.4개월차 드디어 노트북 구매

2021.11.11 - [프로그래밍/Python & Django] - [파이썬 인강] 1주차 파이썬 기본 문법 환경설정 및 Python 기본(Mac)

2021.11.11 - [프로그래밍/Python & Django] - [파이썬 인강] 2주차 - 반복문,튜플, 함수, 클래스, 상속

2021.11.11 - [프로그래밍/Python & Django] - [파이썬인강]3주차-모듈과 패키지, 파일 읽/쓰기 ,예외처리 및 심화문법1

2021.11.29 - [프로그래밍/Python & Django] - [파이썬인강]3주차-모듈과 패키지, 파일 읽/쓰기 ,예외처리 및 심화문법

2021.12.07 - [프로그래밍/Python & Django] - [파이썬인강]4주차 클레스와 객체 ,상속, 데이터베이스, 정규표현식, 스레드

2021.12.13 - [프로그래밍/Python & Django] - [파이썬인강]5주차- 웹 & 프론트엔드 기본(html, css)

2021.12.13 - [프로그래밍/Python & Django] - [Python & Django] HTML /CSS 실습환경

2021.12.20 - [프로그래밍/Python & Django] - [파이썬인강]6주차 django 프레임 워크, django view,settings,url,templates 파일

2021.12.27 - [프로그래밍/Python & Django] - [파이썬인강]7주차- 스타일링, Session, GCP, 배포 / 프로젝트 구성

 

[파이썬인강]7주차- 스타일링, Session, GCP, 배포 / 프로젝트 구성

2021.11.11 - [분류 전체보기] - IT 기업 2.4개월차 드디어 노트북 구매 2021.11.11 - [프로그래밍/Python & Django] - [파이썬 인강] 1주차 파이썬 기본 문법 환경설정 및 Python 기본(Mac) 2021.11.11 - [프로그..

base-on.tistory.com

 

 

마지막 8주차는 프로젝트의 대체적인 내용과 딥한 내용을 담고 있습니다.

해당 내용은 코드로 줄줄이 알려줘서 설명과 이해가 다소 어려웠던 것 같습니다.

1주차 파이썬 부터 8주차 프로젝트 심화 과정까지 8주를 알차게 보낸 것 같아 내 자신에게도 뿌듯하고 한층 더 성장하게 된 것 같아 학부시절 개발자를 목표로 공부했던 때가 생각이 나더라구요. 3년 정도 지난 지금 개발이라하면 두렵고 익숙하지 않은 단어였는데 비교적 도전적으로 생각하고 고민하게 된 것 같습니다.

국비(패스트캠퍼스)를 통해 파이썬언어를 기본으로 배워 나중에 이직 중 코딩테스트에 도움 될 것 같고 맥북을 사면서 뭘 할지 고민을 했는데 첫 스타트를 좋게 끝낸게 뿌듯했습니다.

파이썬&django 강의 추천 드리고 노력은 내가 해야된다는 것을 다시 깨달았습니다. 나라&기업에서 이렇게 양질의 기회를 준다는 것은 최근에 알게 되었고, 직장인이 였던 나에게도 배울 수 있는 기회를 줘서 나라 복지를 찾아서 잘 빼먹으면 자기개발에 큰 도움이 되겠구나 생각 됐습니다.

 

 

이번 포스팅은 따라하다 이해안됐던 부분만 포스팅하겠습니다.

 

프로젝트 구조 
---------
-프로젝트 root
 - 프로젝트 폴더
  - urls.py (1. 요청이 들어오면  요청에 대한 응답에 맞게 include를 해준다) 
  - settings.py
  - wsgi.py
  - ....
 - 앱 폴더 1 (ex: shortener)
 - 앱 폴더 2 (ex: shortener 2)
  - user view폴더 (기능 마다 나눔 /유저관련)
   - urls.py (2. include 대상)
   - views.py 
  - URL View 폴더 
   - urls.py
   - views.py
 - manage.py
root projecrt/urls.py
---
path("urls/",include("app_dir.urls의 경로 ")



----
프로젝트의 views.py
----
해당 url의 관리하는  코딩이 빠져잇음



----
app_dir/urls/urls.py
기존 프로젝트의 urls.py와 동일하게 되어 있다
하는 이유는 프로젝트의 urls.py 내용이 길어지면 관리하기 어려워지기 때문에
----

 

 

 

admin/ 에 관리할 모델 추가하기

	app_dir/admin.py
---
from app_name.models import models_name
admin.site.registry(models_name)

 

restful api

 

serializer라는 개념이 나온다 .

json→ Python 객체

python객체 → json

바꿔주는 것으로 정의

ex)
---
{
"name":"base",
"age": 30
}
변환
class foo:
	name:str
	age:int

 

 

 

설치

1.
pip install djangorestframework
---
2. settings.py
INSTALLED_APP= [ "rest_framework"] #추가
REST_FRAMEWORK = {
	'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.LimitOffsetPagination' ,
	'PAGE_SIZE':20 #데이터를 20개씩 끊어서 제공
} #추가

 

serializer생성

프로젝트Root/urls/에 apiㄴ.py,serializer.py가 생성 됨


프로젝트root/urls.py
---
path("api",include("project,urls,urls"))


프로젝트root/url/urls.py
--
from shortener.forms import UrlCreateForm
from shortener.urls.views import url_change,url_list, url_create
from django.contrib import admin
from django.urls import path

from rest_framework import routers
from shortenrer.urls.apis import *

router=router.DefultRouter()
router.register(r'urls',UserViewSet)
#접근 시  localhost:8000/api/urls/~~~


urlpatterns=[ 
	path("",url_list, name="url_list"),
	path("create",url_create,name="url_create"),
	path("<str:action>/<int:url_id>",url_change,name="url_change"),
]


---
프로젝트root에 serializers.py
---
from app_name.models import model_name

class userbaseSerializer(serializers.ModelSerializer):
	class Meta:
		model=User
		exclude=("password",) #패스워드를 제외하고

class userserializer(serializers.ModelSerializer):
	user=userbaseSerializer(read_only=True)    
	class Meta:
		model=Users
		fields=["id","urls_count","organization","user"] 

class model_Serializer(serializers.ModelSerializer):
	creator= userserializer(read_only=True)
	class Meta:
		model=shortenerUrls
		fields=["id","nick_name","prefix","shortener_url","creator","click","create_via","exprired"]