간단한 Json을 보여주는 API를 만들겁니다.
( python, conda, django, pip 의 설치 내용은 이번글에 포함되지 않습니다 . )https://www.youtube.com/watch?time_continue=707&v=s9E5EYAm5gs
위 유튜브의 내용을 3.7 python에 맞추어 정리해보았습니다.
-
[shell] 프로젝트 담을 폴더로 이동 후 프로젝 장고프로젝트 스타트
프로젝트는 만드려고 하는 웹페이지의 전체(프론트엔드, 백엔드 총괄//보여지는 부분과 보이지 않지만 동작하고 있는 기능, 데이터베이스)를 통칭한다고 보시면 됩니다.
django-admim startproject someproject # <== shell 에서 입력
-
[shell] 프로젝트 폴더에서 앱만들기
앱은 프로젝트를 이루는 구동 단위 입니다. 페이지라기 보다는, 로그인 기능, 결제 기능등등의 기능 단위로 이해하시면 됩니다.
python manage.py startapp someapp # <== shell 에서 입력
-
[shell] 세팅 변경
프로젝트의 세팅을 변경해서 원하는 세팅으로 작동할 수 있도록 합니다.
vi someproject/settings.py #<== vim으로 파일을 열고 INSTALLED_APPS = [ ... 'someapp', #<== 추가후 저장 하시면 됩니다. ]
*vim 설명 : 터미널에서 작동하는 텍스트 에디터, 파일을 열면 기본은 view 모드 입니다. 수정을 하기 위해서는 i 키를 눌러야 삽입모드가 됩니다. 원하는 텍스트로 수정후 :wq 를 입력하면 저장후 종료가 됩니다.
-
[shell] url 변경
url은 앱을 구동시키기 위한 경로입니다. 홈페이지 상에서 연결되는 페이지 경로라기 보다는, 설정한 기능을 불러오는 경로라고 보시면 됩니다.
vi someproject/urls.py # <== vim으로 파일을 열고 from django.urls import path, include #<== django.urls에서 경로설정을 하기 위해 필요한 path, include 를 불러옵니다 . from django.contrib import admin # 장고의 기본 관리자 설정을 불러옵니다. urlpatterns = [ #url 경로를 설정하는 양식입니다. path ( 'admin/', 'admin.urls.py') #메인 페이지 경로에 admin/추가시 'admin.urls.py'을 참조합니다. path ( ' ', include('someapp.urls')) #메인 페이지경로에서 someapp.urls 주소를 참조합니다. 프로젝트의 url이 앱의 url을 가르키도록 설정합니다. ]
vi someapp/urls.py # <== vim으로 파일을 열고 from django.urls import path # 마찬가지로 someapp에서도 경로설정을 위해 path를 불러옵니다. include는 필요하지 않습니다. urlpatterns = [ #앱에서 어떤 로직을 불러올지 설정합니다. path ( '', views.content_list) #views.content_list는 someapp이 불러올 실행코드(view)입니다. ]
-
[shell] views 세팅 후 서버 작동 확인
vi someapp/views.py # <== vim으로 파일을 열고 from django.http import JsonResponse #JsonResponse 라는 반응을 가져옵니다. def content_list(request): #Http Request가 올때 함수를 작성합니다. data = [ {'id': 1, 'title': 'title1'}, ] # 리턴할 데이터 입니다. 들여쓰기는 화이트스페이스4칸입니다. return JsonResponse(data, safe=False) # 데이터를 Json 형식으로 리턴합니다.
python manage.py runserver # <== shell에서 실행, django를 이용한 개발서버를 활성화 시킵니다. http://127.0.0.1:8000/ # <== 브라우저로 주소로 들어가 3.에서 입력한 데이터가 나오는지 확인합니다. 나오지 않는다면 어딘가 틀렸단 얘기입니다. (제 설명이 틀리지 않았다면요...)
-
[shell ]models 세팅
from django.db import models # <== 작성할 DB모델을 불러옵니다. class Content (models.Model): # <== Content 라는 DB class를 선언합니다. title = models.CharField(max_length=200) # DB의 값을 설정합니다. models.CharField는 max_length를 필수 인자로 받습니다. 그외의 조건들을 추가할 수 있습니다. content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) #models.DateTimeField 시간을 입력하는 DB model value입니다. auto_now_add 는 입력할때의 값으로 고정이 됩니다. updated_at = models.DateTimeField(auto_now=True) #auto_now 데이터 저장시에 그 시점으로 업데이트되어 저장됩니다.
-
[shell] DB 생성하기
python manage.py migrate python manage.py makemigrations someapp # DB 가 위에서 설정한 모델의 설정을 저장할 수 있도록 준비합니다. python manage.py migrate someapp # model 설정을 DB에 적용합니다.
-
[shell] admin 에서 DB 에 등록 할 수 있도록 기능 추가
vi someapp.admin.py from django.contrib import admin from .model import Post #model Class를 불러옵니다. admin.site.register(Post) #어드민 페이지에서 Post DB에 등록할 수 있도록 설정합니다.
python manage.py createsuperuser #<== admin 페이지의 id pw 설정합니다. http://127.0.0.1:8000/admin 으로 들어가면 관리자 페이지 로그인 창이 나타납니다. 위에서 설정한 id/pw 를 이용해서 들어갑니다.
someapp으로 들어가셔서 데이터를 추가합니다. title1, content1 이런 식으로 title3, content3 까지 만듭니다.
-
view 수정 postlist 가 나올 수 있도록
vi someapp/views.py # 수정할 파일을 엽니다. def content_list(request): post_list = [] #admin에서 입력한 값들이 담길 리스트 생성 for post in Post.objects.all(): #반복문을 돌며 리스트에 data들을 담습니다. post_list.append({ 'id': post.id, 'title': post.title, 'content': post.content }) return JsonResponse(post_list, safe=False) http://127.0.0.1:8000/ 에서 입력한 Title, Content 불러 오는 거 확인하시면 위에서 입력한 title과 content가 나오는걸 볼 수 있습니다. 요호!