✅ django 설치
$ pip install django==3.2.18
✅ 가상환경 사용
ctrl + shift + p
$ django-admin startproject 프로젝트 이름
👉 폴더 안만들고 지금 폴더에서 바로 프로젝트 만들기
$ django-admin startproject 프로젝트 이름 .
✅ 앱 생성
$ python manage.py startapp 앱이름
👉 앱 등록 ( 프로젝트 => settings.py )
$ python manage.py runserver
Model / View / Template
👉 MTV 패턴
데이터
와 관련된 로직 관리 / 응용프로그램의 데이터 구조를 정의하고 데이터베이스의 기록을 관리화면
을 처리 / 화면상의 사용자 인터페이스 구조와 레이아웃 정의로직을 처리
해서 응답을 반환
/ 클라이언트 요청에 대해 처리를 분기
URL -> VIEW -> TEMPLATE
👉 url 에 myapp 이 작성되면 myapp 의 views 항목의 func_name 으로 !
👉 myapp의 index.html 으로 !
👉 render() : 주어진 템플릿을 주어진 컨텍스트 데이터와 결합하고 렌더링 된 텍스트와 함께 HttpResponse (응답) 객체를 반환하는 함수
return render(request, 'template_name', context)
👉 실제 내용을 보여주는데 사용 / 파일의 구조나 레이아웃을 정의
👉 app 폴더 안의 templates 폴더 안의 app 이름과 똑같은 이름의 폴더 안에 생성 !
Variable routing
: 비슷한 URL과 템플릿을 계속해서 만들어야 한다면 하나의 path() 에 여러 페이지를 연결 / <> 에 변수 정의App URL mapping
: 하나의 프로젝트에 여러 앱이 존재할 때 각 앱 안에 urls.py 를 만들고 프로젝트 urls.py 에서 각 앱의 urls.py 파일로 매핑Naming URL patterns
: URL 에 name 인자를 지정하여 view 함수와 템플릿에서 특정 주소를 쉽게 참조할 수 있도록 함 {% url 'name' %}
을 사용하여 경로 주소 반환 -> 템플릿에 URL을 하드 코딩 하지 않고 링크를 출력 가능URL namespace
: 서로 다른 앱에서 동일한 URL 이름을 사용하는 경우에도 이름이 지정된 URL을 고유하게 사용할 수 있음 / 앱의 urls.py 에 app_name = '앱 이름'
을 urlpatterns 위에 작성{% url '앱 이름 : URL name' %}
형태로만 사용 👉 HTML 에 python 으로 처리한 데이터를 표현하기 위해서 사용하는 built-in template system
{# #} : 한 줄 주석 /
{% comment %}
여러 줄
주석
{% endcomment %}
{% extends '부모 템플릿' %}
👉 반드시 템플릿 최상단에 작성 !
{% block content %}
{% endblock content %}
👉 하위 템플릿에서 재지정 할 수 있도록 블록을 정의
만약, 모든 앱에서 base.html 을 상속 받고 싶다면 !
base.html 이 있는 templates 폴더를 밖으로 빼서 프로젝트 상단에 두고
settings.py 의 TEMPLATES 에서 'DIRS' : [BASE_DIR / 'templates'] 로 변동