본문 바로가기
  • 살짝 구운 김 유나
Web/Django

Django 시작하기

by yunae 2022. 8. 30.

<기본 설정>

가상환경 설정

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

댓글