Django-2

SSO·2022년 2월 7일
0

LikeLion9th

목록 보기
5/7
post-thumbnail

장고 내에서의 정보의 흐름

-> 흐름은 html파일이라고 생각하자

장고는 어떻게 작동할까?

-> 파일 및 폴더 간의 티키타카로 작동한다!

어디서? 어떻게?

->처음 장고를 시작하면 장고 프로젝트를 생성해야한다!
지금 당장은 manage.py로 서버를 작동시킨다

App

App 은 프로젝트의 구성 단위이다.

App 생성
pyhton manage.py startapp app이름

하지만 앱을 생성한다고 바로 실행될 수는 없다!!
-> 프로젝트 폴더 내의 settings.py파일에게 앱이 생성되었음을 알려주어야 한다.
프로젝트와 앱을 생성한 이후 이 두개를 연결시켜주어야 한다!

myproject폴더의 settings.py파일의 INSTALLED_APPS에 myapp.apps.MyappConfig
리스트에 추가해주면 프로젝트와 앱이 연결된다.

이 앱 폴더 안에는 templates 폴더 생성이 필요하다.
이 안에는 유저에게 보여질 화면들인 html파일을 만들어 담는다!

html파일을 만든 후 유저에게 보여질 이 화면이 언제, 어떻게 처리될지 알려주는 '함수'를 views.py안에 작성한다.

views.py
언제 어떤 상황에서 데이터를 처리해야하는지 알려주는 파일로 이 안에 함수를 작성하면 된다.

url.py
파일은 내가 만든 html이 어떤 url을 입력해쓸 때 뜨게 할지 결정한다 .
우리가 url을 타고 접속하기 위해서 myproject폴더 안의 urls.py파일의 urlpatterns 리스트에
url을 추가시켜주면 된다.
path('조건', 폴더.파일.함수이름, name="이 경로의 이름")
-> 조건이 공백일 경우 접속한 기본 url로 포트번호에 접속했을 경우이다.
이 포트 번호 뒤에 /를 붙이고 ---를 쓰면 어디로 이동할지를 알려준다.

MTV 패턴

장고의 구동원리 : 티키타카 => MTV패턴!

MTV = Model, Template, View

  • Model : DB를 다뤄주는 역할
  • Template : 보여주기 담당
  • View : 처리담당

각각 독립적으로 임무를 수행해 장고 전체를 구동시킨다!

MCV패턴

MTV가 차용한 방식으로 좀 더 일반적인 패턴

  • Model : DB담당
  • View : 사용자에게 보여지는 부분 담당 (이름은 같지만 역할이 다름!)
  • Controller : 중간관리 담당

MTV의 ViewMVC의 Controller아주 중요한 역할!

render함수

세 개의 인자를 받을 수 있음.
첫번째는 request, 두번째는 템플릿의 이름, 세번쨰는 선택적(사전형 객체, 딕셔너리형 자료형)

Model & Admin

  • 데이터베이스를 다룸 : Model
  • 데이터를 직접 다루는 권한을 가지고 있는 유저 : Admin

Model에 데이터를 어떻게 담을 것인가!

우선 models.py에 우리가 다룰 데이터를 클래스의 형태로 정의해주면 된다!

Ex) '다이어리' - 사진 날짜 내용이 들어가 있음
-> 다이어리라는 객체가 생성될 때마다 위의 세개의 데이터를 처리
=> 처리할 데이터를 클래스의 형태로 만들어준 다음 계속 호출하면 같은 형식의 객체가 찍혀 나옴

비유를 하자면

  • model.py : 데이터를 만드는 공장
  • class : 어떤 데이터를 처리할 지에 대한 틀
  • 클래스(틀)로 찍혀 생성된 각각의 데이터 : 객체
  • 데이터베이스 = 정보 저장 공간 -> 여러 개가 있을 수 있다.
    -> 데이터베이스는 장고와 별개이다!!

따라서 models.py에 새로 데이터가 생기면 이를 데이터베이스에 알려주어야 한다!!

-> 알려주는 명령어 : python manage.py makemigrations / python manage.py migrate
migration.py를 만드는 과정 만들어진걸 실제로 적용

admin 계정 만들기
python manage.py createsuperuser (-> admin.py 데이터 등록)

profile
Github_qkrthdus605

0개의 댓글