1-2. Django Start
2020. 10. 6. 22:47ㆍdjango
이번글은 django의 본격적인 코드가 아니라 시작할때 준비하는 코드에 대한 글이다. 왜? 시작이 반이기 때문에 이것만 잘알아두어도 나중에 편할것이다.
django를 할때 우리의 로컬 환경을 사용해도 되지만 가상환경을 사용하는것이 조금 더 편리하다. 가상환경은 잘못되면 환경을 바로 지우면 되기때문에 그리고 라이브러리 관리하는것도 쉽다. 따라서 지금부터는 가상환경을 이용해서 환경을 구축한다.
- 가상환경 만들기
python -m venv venv
- python : 파이썬 관련 명령어 실행
- -m : 옵션 (명령어를 실행하기 위한 옵셥)
- venv : 가상환경을 만드는 명령어
- venv : 가상환경 이름(똑같이 만들면 default값으로 venv가 많이 사용되기 때문에 편리함)
- 가상환경 적용하기
source venv(가상환경이름)/Scripts/activate
- source : 코드 적용
- venv/Scripts/activate : 적용할 코드 경로
그리고 가상환경에서 패키지 설치할때 미리 사용할 목록을 작성한 파일을 이용하여 설치하면 편하다.
pip install -r requirements.txt
django start(startproject)
$ django-admin startproject intro(이름)
- 실제로 제일 밖에 있는 이름은 필요 없고 안에 있는 폴더 이름이 중요하다. 위처럼 하면 intro/intro 이런식으로 디렉토리가 있다.
$ django-admin startproject intro(이름) .(경로)
- 이런식으로 하면 intro/intro 이런식이 아니라 intro 딱 하나만 생성됨
서버 실행(Run Server)
$ python manage.py runserver
- 서버 종료
ctrl + c
여기 까지하면 우리가 사용할 장고의 진짜 기본적인 서버는 구축했다.
다음글에서 본격적인 코드를 알아보기 전에 먼저 만든 프로젝트에 구조에 대해서 살펴보면
다음과 같다.
프로젝트 구조
__init__.py
- 빈 파일
- Python에게 이 디렉토리를 하나의 Python 패키지로 다루도록 지시
settings.py
- 웹사이트의 모든 설정을 포함
- 우리가 만드는 어떤 application이라도 등록이 되는 곳이며, static files의 위치, database 세부 설정 등이 작성
urls.py
- 사이트의 url와 view의 연결을 지정
wsgi.py
- Web Server Gateway Interface
- 장고 어플리케이션이 웹서버와 연결 및 소통하는 것을 도움
asgi.py
- new in 3.0
- Asynchronous Server Gateway Interface
- 장고 어플리케이션이 비동기식 웹 서버와 연결 및 소통하는 것을 도움
그리고 추가로 알아두면 좋은것인데 나중에도 하겠지만
django 설정
settings.py에 들어가서
LANGUAGE_CODE = 'ko-kr'(요거 바꾸면 언어)
TIME_ZONE = 'asia/seoul'(요거 바꾸면 시간)
app은 다음글에서도 한번 더 복습할것이다. 중요하니깐!!!
이제 장고에 기능을 넣어줄 app을 만들어주기 전에 app에 대해서 알아보면
Application (app)
- 실제로 어떠한 역할을 해주는 친구가 app.
- 프로젝트는 이러한 어플리케이션의 집합이고, 실제 요청을 처리하고 페이지를 보여주고 하는 것들은 이 어플리케이션의 역할.
- 하나의 프로젝트는 여러 개의 app을 가질 수 있다.
- app은 하나의 역할 및 기능 단위로 쪼개는 것이 일반적
- 그러나 작은 규모의 서비스에서는 잘 나누지 않는다.
- 반드시 이렇게 나눠야 한다 같은 기준 또한 없다.
- 일반적으로 app 이름은
복수형
으로 하는 것이 좋다.
app 생성(startapp)
- 반드시 현재 경로에 manage.py가 있어야 함
- 반드시 생성 후에 등록! --> 등록은 settings.py에서
python manage.py startapp pages(이름)
앱을 생성하면 다음은 구조로 되어있음
Application 구조
admin.py
- 관리자용 페이지 관련 기능을 작성 하는 곳.
apps.py
- 앱의 정보가 있는 곳.
- 우리는 수정할 일이 없다.
models.py
- 앱에서 사용하는 Model(Database)를 정의하는 곳.
tests.py
- 테스트 코드를 작성하는 곳.
views.py
- view가 정의 되는 곳.
app 등록
intro/settings.py
에서 등록함
INSTALLED_APPS = [
########
'pages',
########
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
기능단위 별로 app을 만들어서 해당하는 기능은 app이 담당한다.
앱의 등록할때의 순서에 대한 국룰이다.
INSTALLED_APPS = [
# Local apps 내장
'blogs.apps.BlogsConfig',
# Third party apps 다른사람들이 만든앱
'haystack',
# Django apps 장고 앱
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
]
이제 다음 글에서는 실제로 우리가 구현할 실제 예시와 함께 본격적인 코드에 대해서 알아볼것이다.
'django' 카테고리의 다른 글
2. Django app (0) | 2020.10.08 |
---|---|
5. Django AUTH (0) | 2020.10.08 |
3. Django CRUD (0) | 2020.10.08 |
1. Django? (0) | 2020.10.06 |
Django: Rest API (0) | 2020.10.05 |