Django는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크
웹 사이트를 구축할 때 비슷한 요소들이 항상 필요하자 웹 개발자들은 바로 사용할 수 있는 구성요소들을 갖춘 프레임워크를 만들었고 그 중 하나가 Django임.
모델-뷰-컨트롤러(MVC) 패턴 따름
모델은 데이터에 관한 정보를 담고 있음
뷰는 어떤 데이터가 표시될 것인지를 정의
템플릿은 데이터가 어떻게 표시되는지를 정의
템플릿: 우리가 보는 html 화면이라 생각하면 된다
Django에서 템플릿을 띄워주는 과정은 다음과 같다.
1. URL로 요청 받아서 우리가 URL을 적어준 urls.py로 가서 해당 요청에 맞는 URL 분석
2. 우리가 썼던 views 함수이름을 통해 해당 URL에 연결된 view로 가서 함수 찾아 기능 수행
3. view는 로직을 실행하며 데이텁이스 관련 처리는 model을 사용하여 결과 반환
4. 마지막으로 view는 최종 결과로 templates(html파일)을 클라이언트에게 보내줌
프로젝트 실행 위해 서버 키기
$ python manage.py runserver
Django에서는 Model을 이용해 게시판에서 각각의 게시글이 데이터베이스에 어떻게 저장될 지를 결정.
=> 예를 들어 게시글이라는 틀을 하나 만들면 그 틀을 이용해서 여러 가지 게시글을 만들고 이를 저장
Django 공식 문서에는 migrate는 모델의 변경 내역을 DB 스키마에 적용시키는 방법이라 설명.
하나의 migration 파일은 해당 migration이 생성된 시점의 모델 구조를 담고 있음.
** 주의
각 migration은 이전 버전에 대해 의존성을 가지기 때문에 적용된 migration 파일은 절대로 삭제해서는 안된다. migration 파일을 삭제하려면 반드시 적용을 해제하고 삭제해야함
python manage.py makemigrations [app_name]
=> migration을 생성하는 명령어
프로젝트 생성 후 처음 migration을 생성할 때는 app_name 생략
python manage.py migrate [app_name][migration_name]
=> migration을 적용하는 명령어
이전 버전으로 되돌리는 것도 가능
Django 프로젝트의 모든 앱과 object를 관리하는 계정
manage.py 통해 Superuser 생성
파이썬 터미널 창에서 작업
html에서 <form>
태그는 내부의 정보를 한 번에 서버로 전송하는 역할.
이렇게 웹에서 정보를 서버에 전송할 때 주로 GET과 POST 방식으로 통신함
GET 방식은 원하는 데이터를 서버에 요청해서 받아오는 것.
-> 주소창에 가져올 정보가 모두 표시되므로 중요한 정보는 GET을 사용하면 안됨.
POST 방식은 정보를 서버에 전송하여 서버 데이터베이스에 우리가 보낸 정보를 저장하는 방식.
사이트 간 요청 위조(cross-site request forgery)로 웹 애플리케이션의 취약점 중 하나.
사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하며 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등 작업을 하게 만드는 공격방법을 의미.