티스토리 뷰
Django에 들어가기 전에 간단하게 정리해야할 내용을 정리하고, 본문으로 들어가도록 하자. 이제 python, html, css 까지 했으면 back-end까지 할 수 있게 된다. front-end도 깊게 들어가지는 않았지만(javascript) 하나의 언어로 어느정도까지 개발 할 수 있는 거리까지 오지 않았을까 싶다. 단어만 들어도 어려워보이는 back-end... 해보자 참고로 Python은 3.9버전이다.
Client(클라이언트)와 Server(서버)
- Client
: 사용자 인터페이스를 통해 서버에 요청을 전송하고, 서버에서 받은 데이터를 사용자에게 표시하는 역할
: 서비스를 요청하는 주체
: Chrome 또는 Firefox와 같은 웹 브라우저
- Server
: 클라이언트로부터 요청을 받아 처리, 필요한 데이터를 제공하는 컴퓨터 시스템 또는 프로그램
: 요청에 대해 서비스를 응답하는 주체
: 데이터베이스, 파일, 시스템, 외부 API 등 다양한 소스에서 데이터를 가져와 응답을 생성한다
클라이언트는 웹 서비스 구조에서 사람은 아니고 고객이 이용하는 단말기기라고 생각하는 것이 편하다. 예를들어 내가 네이버를 접속하기 위해 핸드폰에서 NAVER에 접속 및 원하는 것을 요청하고, 서버인 네이버에서는 그에 따른 반응을 돌려준다.
--공사예정--
Back-end(백 엔드)
: 프론트 엔드와 다르게 사용자에게 직접적으로 보이지 않는 부분으로, 서버 측의 로직과 데이터 처리를 담당한다. 주요 기술로는 서버 프로그래밍 언어, 데이터베이스, 웹 프레임워크가 포함된다
- 서버 프로그래밍 언어: 백엔드 로직을 구현하는데 사용되는 프로그래밍 언어
- Java
- Python
- Ruby
- Node.js
- 데이터베이스: 애플리케이션의 데이터를 저장하고 관리
- SQL(Structured Query Language) : 관계형 데이터베이스
- NoSQL(Not Only SQL) : 관계형 데이터베이스 모델 이외의 데이터베이스
Django (장고)
: Python 기반의 대표적인 웹 프레임워크이며 프랑스어로 장고라고 부른다. (민수 왈 : 디장고)
: 검증된 웹 프레임워크로 2023년 기준 세계에서 2번째로 인기있는 Backend Framework다. (물론 한국에선 제외)
- 다양성
- Python 기반으로 소셜 미디어 및 빅데이터 관리 등 광범위한 서비스 개발에 적합
- 확장성
- 대량의 데이터에 대해 빠르고 유연하게 확장할 수 있는 기능을 제공
- 보안
- 취약점으로부터 보호하는 보안 기능이 기본적으로 내장되어 있음
- 커뮤니티 지원
- 개발자를 위한 지원, 문서 및 업데이트를 제공하는 활성화 된 커뮤니티
가상 환경 (virtual environment)
Python 애플리케이션과 그에 따른 패키지들을 격리하여 관리할 수 있는 독립적인 실행 환경을 사용한다. 파이썬 환경에서 패키지 버전은 1개의 버전만 존재할 수 있기 때문에 나뉘어야 하며, 개발환경이 겹치게되면 프로젝트들이 실행이 안되는 경우가 생기기 때문이다. 혹은 패키지끼리의 충돌이 생기는 경우가 있기 때문에 꼭 나누어야만 한다.
따라서 하나의 개발 환경을 구축하기위해 Python 가상환경인 venv을 사용해줘야 한다. 먼저 가상환경을 만든 다음, 가상 환경을 on/off 해줄 수 있다.
프로젝트를 진행하면서 반드시 써야할 키워드는 눈에 띄게 나열해보자.
가상환경 생성
python -m venv venv
python : 파이썬 인터프리터를 실행하도록 시스템에 요청 = Python을 실행하기 위한 명령어
-m : python 모듈을 실행하는 옵션
venv : python의 표준 라이브러리 중 하나인 venv 모듈을 선언
venv : 앞의 venv가 있어서 헷갈릴 수 있으나, 새로 가상 환경 디렉토리의 이름이다. 이 부분은 다른 단어로 사용은 가능하지만 가상 환경임을 명시하기 위해 가상 환경 디렉토리 이름은 'venv'로 고정
>> python 인터프리터를 통해 venv의 모듈을 실행하는데, 디렉토리 이름은 venv로 생성해라.
가상환경 On
source venv/Scripts/activate
source : 현재 쉘 세션에서 스크립트를 실행하라는 명령
venv/Scripts/activate : 가상 환경의 활성화 스크립트 파일의 경로
>> 현재 쉘 세션에서 venv 가상 환경 활성화 해라.
반대의 키워드는 deactivate로 가상환경을 off 할 수 있다.
패키지 리스트 확인
pip list
pip : python 패키지 관리자. 명령어를 내리기 위해 호출
list : python 환경에 설치되어 있는 패키지를 나열
>> 현재 활성화 되어있는 가상 환경에 설치된 모든 패키지와 버전을 표시
이때, 패키지 목록을 확인 및 필요한 이유는 충돌의 사유와 비슷하다. 다른 개발자가 해당 프로젝트를 협업하기 위해 관련된 패키지를 개인이 설치하고 공유했다. 이어서 내가 개발하려고 파일을 공유 받고 실행하면, 버전이 다르기 때문에 실행이 되지 않는다. 따라서 패키지 목록을 공유하여 같은 개발환경을 기준으로 개발해야 충돌(실행불가)이 생기지 않는다. 물론 모든 패키지가 그런 것은 아니지만, 의존성 패키지에 의해 호환되는 버전이 아니면 오류가 발생하거나 예상치 못한 동작을 보일 수 있기 때문이다.
패키지 및 버전 정보 저장
pip freeze > requirements.txt
pip freeze : 현재 가상 환경에 설치된 모든 패키지와 그 버전을 나열
> : 리다이렉션 연산자로, 왼쪽의 결과를 오른쪽 파일에 입력
requirements.txt : 출력된 패키지 목록을 저장할 파일의 이름. 다른 이름을 써도 되지만, 정해진 규칙
>> 현재 가상 환경에 설치된 모든 패키지와 버전 정보를 'requirements.txt' 파일에 저장해라.
패키지 및 버전 정보 호출 및 설치
pip install -r requirements.txt
pip install : python 패키지 설치 명령어
-r : 뒤에 나오는 특정 파일을 읽어 패키지 목록을 가져오라고 지시
requirements.txt : 패키지 목록을 저장할 파일의 이름.
>> 패키지와 버전 정보가 담겨있는 'requirements.txt' 파일을 읽어서 설치해라.
즉, 프로젝트를 시작할 때 가장 먼저 해야할 것은 아래의 세가지와 같다.
1. 가상환경 생성 (python -m venv venv)
2. 가상환경 활성화 (source venv/Scripts/activate)
3. 프로젝트 패키지 설치 or 주어진 의존성 파일 설치 (pip install django == 버전 or 의존성 파일이 있다면 pip install -r requirements.txt)
프로젝트 생성
django-admin startproject firstpjt .
django-admin : django 프로젝트와 관련된 명령을 실행할 수 있는 django의 커맨드라인 유틸리티
startproject : django 프로젝트를 시작하는 명령으로 프로젝트를 생성할 때 사용
firstpjt : 프로젝트 생성 디렉토리 명으로 수정가능한 부분
. : 현재작업 디렉토리를 의미
>> 현재 작업 디렉토리에 firstpjt라는 디렉토리 명으로 새로운 프로젝트를 생성한다
서버 시작 명령
python manage.py runserver
python : 앞서 말한 python 인터프리터 요청
manage.py : 프로젝트의 root 디렉토리에 있는 스크립트 파일로 프로젝트 관리를 위해 여러 명령을 실행
runserver : manage.py 스크립트에서 실행할 명령어로 Django의 내장 개발 서버 시작명령
4. 프로젝트 생성 (django-admin startproject myproject .)
5. 서버확인 (python manage.py runserver)
'python manage.py runserver'를 사용해 django 개발 서버를 시작하면 기본적으로 django 로고가 포함된 로켓 아이콘이 나타난다. 이는 정상적으로 개발 서버가 시작됨을 표시한다.
본문 중 1-5번까지만 따라 작성해도 마지막로켓을 확인하면 프로젝트 하나를 실행까지 해본 것이다. 처음 여러가지 명령어가 헷갈리고 디렉토리(폴더)위치에 따라도 실행 되는지 안되는지, 이후에는 ', ' 하나로 안되는 경우도 있다.
공식문서 보면서 하면 좋다
Django 공식 문서 : https://docs.djangoproject.com/ko/4.2/intro/
jump to django : https://wikidocs.net/book/4223/
'일상코딩 > 노트' 카테고리의 다른 글
Django : Template Language (DTL) (1) | 2024.03.14 |
---|---|
Django : Design Pattern (MTV) (0) | 2024.03.13 |
Web : CSS (Box Model) (0) | 2024.03.07 |
Python : 순열(Permutation) Review (1) | 2024.02.28 |
Python : 반복(Iteration)과 재귀(Recursion) Review (0) | 2024.02.27 |
- Total
- Today
- Yesterday
- views.py
- 카운팅정렬
- 함수
- 재귀
- Method
- Django
- ssafy
- baby-gin
- Database
- Authentication System
- app
- honeymoney
- 연산자
- CodeTree
- Component
- vue3
- SQLite
- 삼성청년SW아카데미
- ChatGPT
- vue
- JavaScript
- dfs
- Sequence types
- 백준
- Python
- SQL
- basic syntax
- HTML
- refactoring
- 순열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |