<기본 설정>
가상환경 설정
python -m venv venv
가상환경 구동 (활성화)
source venv/Scripts/activate
Django 설치
(설치 전 가상환경 설정 및 활성화를 마치고 진행)
- django 4.0 릴리즈로 인해 3.2(LTS) 버전을 명시해서 설치
$ pip install django==3.2.13
프로젝트 생성
-> 프로젝트 이름에는 python이나 Django에서 사용중인 키워드 및 '-' (하이픈) 사용 불가
-> '.'(dot)을 붙이지 않을 경우 현재 디렉토리에 프로젝트 디렉토리를 새로 생성하게됨
$ django-admin startproject firstpjt .
서버 실행
- 실행 시킨 후 ctrl 키 누르고 주소 마우스 클릭
$ python manage.py runserver
프로젝트 구조
1. __init__.py : python에게 이 디렉토리를 하나의 python 패키지로 다루도록 지시
2. asgi.py : Django 애플리케이션이 비동기식 웹 서버와 연결 및 소통하는 것을 도움. 추후 배포시에 사용
3. settings.py : Django 프로젝트 설정을 관리
4. urls.py : 사이트의 url과 적절한 views의 연결을 지정
5. wsgi.py : Django 애플리케이션이 웹서버와 연결 및 소통하는 것을 도움. 추후 배포시에 사용
6. manage.py : Django 프로젝트와 다양한 방법으로 상호작용하는 커맨드라인 유틸리티
애플리케이션 생성
$ python manage.py startsapp 어플리케이션 이름
-> 일반적으로 애플리케이션 이름은 '복수형' 으로 작성하는 것을 권장. ex) articles
애플리케이션 구조
1. admin.py : 관리자용 페이지를 설정하는 곳
2. apps.py : 앱의 정보가 작성된 곳. 별도로 추가 코드를 작성하지 않음
3. models.py : 애플리케이션에서 사용하는 Model을 정의하는 곳
4. tests.py : 프로젝트의 테스트 코드를 작성하는 곳
5. views.py : view 함수들이 정의되는 곳
애플리케이션 등록
- 프로젝트에서 앱을 사용하기 위해서는 반드시 INSTALLED_APPS 리스트에 반드시 추가해야 함
- INSTALLED_APPS : Django installation에 활성화 된 모든 앱을 지정하는 문자열 목록
# settings.py
INSTALLED_APPS = [
# 여기에 추가하기
'어플리케이션 이름',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Project & Application
Project
- 프로젝트는 앱의 집합
- 프로젝트에는 여러 앱이 포함될 수 있음
- 앱은 여러 프로젝트에 있을 수 있음
Application
- 앱은 실제 요청을 처리하고 페이지를 보여주는 등의 역할을 담당
- 일반적으로 앱은 하나의 역할 및 기능 단위로 작성하는 것을 권장함
※ 애플리케이션 주의사항
1. " 반드시 생성 후 등록"
- INSTALLED_APPS에 먼저 작성(등록)하고 생성하려면 앱이 생성되지 않음
2. 해당 순서를 지키지 않아도 수업 과정에서는 문제가 없지만, 추후 advanced한 내용을 대비하기 위해 권장
INSTALLED_APPS = [
# Local apps
'articles',
'pages',
# Third party apps
#'haystack',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
요청과 응답
URL -> VIEW -> TEMPLATE 순의 작성 순서로 코드를 작성해보고 데이터의 흐름을 이해하기
URLS
View
- HTTP 요청을 수신하고 HTTP 응답을 반환하는 함수 작성
- Templates에게 HTTP 응답 서식을 맡김
render()
render(request, template_name, context)
: 주어진 템플릿을 주어진 컨텍스트 데이터와 결합하고 렌더링 된 텍스트와 함께 HttpResponse(응답) 객체를 반환하는 함수
1. request : 응답을 생성하는데 사용되는 요청 객체
2. template_name : 템플릿의 전체 이름 또는 템플릿 이름의 경로
3. context : 템플릿에서 사용할 데이터 (딕셔너리 타입으로 작성)
Templates
- 실제 내용을 보여주는데 사용되는 파일
- 파일의 구조나 레이아웃을 정의
- 기본 경로 : app_name/templates/
>> 템플릿 폴더 이름은 반드시 templates라고 지정해야 함
Django에서의 코드 작성은 URL -> View -> Template 순으로 작성 (데이터의 흐름 순서)
[참고] 추가 설정
1. LANGUAGE_CODE
- 모든 사용자에게 제공되는 번역을 결정
- 이 설정이 적용 되려면 USE_I18N이 활성화(True)되어 있어야 함
2. TIME_ZONE
- 데이터베이스 연결의 시간대를 나타내는 문자열 지정
- USE_TZ가 True이고 이 옵션이 설정된 경우 데이터베이스에서 날짜 시간을 읽으면, UTC 대신 새로 설정한 시간대의 인식 날짜&시간이 반환 됨
- USE_TZ가 False인 상태로 이 값을 설정하는 것은 error가 발생하므로 주의
(아래 설정값,,,지금은 별도로,, 수정하지 않아,,,,나중에,,,ㅎ)
3. USE_I18N
- Django의 번역 시스템을 활성화해야 하는지 여부를 결정
4. USE_L10N
- 데이터의 지역화 된 형식을 기본적으로 활성화할지 여부를 지정
- True인 경우, Django는 현재 local의 형식을 사용하여 숫자와 날짜를 표시
5. USE_TZ
- datetimes가 기본적으로 시간대를 인식하는지 여부를 지정
- True일 경우 Django는 내부적으로 시간대 인식 날짜 / 시간을 사용
왜 어제 오늘 하늘사진을 안찍었지,,,ㅎ 혜화랑 텐트+치맥+탑건으로 채웠던 초여름!
돗자리 챙겨 나가고 싶은 날씨. 무엇보다 몇시간 동안 재미난 이야기를 나눌 수 있는 사람과의 소풍이 무척 그립다.
'Web > Django' 카테고리의 다른 글
Django Model 2 - QuerySet API (0) | 2022.09.02 |
---|---|
Form Data 보내고 가져오기 (0) | 2022.09.02 |
Templates Inheritance (0) | 2022.09.01 |
Django Model 1 (0) | 2022.08.31 |
Django 이해하기 (0) | 2022.08.30 |
댓글