CRUD (normal ver.)

윤동훈·2023년 3월 22일
1

1. 가상환경 생성 및 실행

-생성

  • Windows
$ python -m venv venv
  • MacOS
$ python3 -m venv venv

-실행

  • Windows
$ source Scripts/activate

-MacOS

$ source bin/activate

2. pip install(ex. django, ipython etc.)

$ pip install django==3.2.18 django-extensions ipython Pillow 
  • django-extensions : shell_plus 등 유용한 장고 툴들 내장

3. startproject & startapp

$ django-admin startproject crud
$ python manage.py startapp articles

파일 경로 ➡️ crud/setting.py

  • 생성해준 app은 setting.py의 INSTALLED_APPS에 추가(django-extensions 포함)

4. url에 따라 변경(ex.articles)

파일 경로 ➡️ crud/urls.py

  • include를 import
  • 도메인에 articles/ 가 들어있는 경우 'articles/urls'에서 처리하도록 함

5. base.html & BASE_DIR

파일 경로 ➡️ templates/base.html

파일 경로 ➡️ crud/settings.py

  • templates 폴더 생성 ==> 이후 상속받을 파일들의 기반이 될 base.html을 생성
  • setting.py에서 BASE_DIR 설정

6. url 관리 해줄 urls.py 생성

파일 경로 ➡️ articles/urls.py

7. index 함수 호출 ➡️ 함수 생성 ➡️ html 파일 생성

파일 경로 ➡️ articles/views.py

파일 경로 ➡️ articles/templates/articles/index.html

  • 샌드위치 구조로 articles 폴더 내부에 template/articles 속에 index.html 생성
  • index 함수와 index.html 내부 구조는 차후 변경 예정

8. models.Model 상속한 Article 클래스 생성 & admin 등록

파일 경로 ➡️ articles/models.py

파일 경로 ➡️ articles/admin.py

  • 모델 생성 후 migration 진행
$ python manage.py makemigrations
$ python manage.py migrate

9. 게시글 생성 폼 요청

파일 경로 ➡️ articles/urls.py

파일 경로 ➡️ articles/views.py

파일 경로 ➡️ articles/templates/articles/new.html

  • POST 방식으로 전송 시 csrf_token 반드시 form태그 하단에 넣어줄 것!
  • 어디로 보낼지 정해주는 action은 차후 변경 예정

파일 경로 ➡️ articles/templates/articles/index.html

  • 폼을 요청해주는 new.html 생성해줬기 때문에 index.html의 새글 작성 a태그 클릭 시 new.html로 url 설정 해줌

10. form에 입력받아 제출 ➡️ create/ & create 함수 호출

파일 경로 ➡️ articles/templates/articles/new.html

  • new.html의 form을 제출 시 articles:create 로 url 설정

파일 경로 ➡️ articles/urls.py

파일 경로 ➡️ articles/views.py

  • create 함수에서 articles:detail로 보내줌 ==> 관련 path와 함수, html 파일 생성

11. 상세페이지 detail 관련 생성 과정 & index페이지를 게시글 목록으로 변경

파일 경로 ➡️ articles/urls.py

파일 경로 ➡️ articles/views.py

파일 경로 ➡️ articles/templates/articles/detail.html

  • 상세 페이지 보여줄 detail.html 생성

파일 경로 ➡️ articles/views.py

파일 경로 ➡️ articles/index.html

  • for문으로 받아온 데이터 전부 뽑아줌
  • 글 제목 선택 시 detail 페이지로 넘어갈 수 있도록 a태그 추가

12. 게시물 수정을 위한 과정

파일 경로 ➡️ articles/templates/articles/detail.html

  • detail 페이지 하단에 update 버튼 생성 ➡️ 해당 페이지의 pk값을 가지고 articles:edit로 넘어감

파일 경로 ➡️ articles/urls.py

파일 경로 ➡️ articles/views.py

파일 경로 ➡️ articles/edit.html

  • 원래 가지고 있던 글 제목과 글 내용을 그대로 넣어줌
  • 제출 시 데이터를 갱신해줄 articles/update로 보내줌

파일 경로 ➡️ articles/urls

파일 경로 ➡️ articles/views

13. 게시물 삭제를 위한 과정

파일 경로 ➡️ articles/templates/articles/detail.html

  • detail.html 하단에 삭제 버튼을 만들어줌
  • 아무나 삭제할 수 있게 하면 안되기때문에 POST형식으로 articles:delete로 전송

파일 경로 ➡️ articles/urls

파일 경로 ➡️ articles/views

0개의 댓글