Django 프로젝트 구조 설정

ubuntu 18.04 LTS 버전에서 구현한것임을 참고로 알아둘 것.

Django 프로젝트 구조 설정

Django 프로젝트 생성

django-admin startproject mysite 입력
# mysite란 이름의 프로젝트성를 생성하겠다는 의미
-> pycharm에서 확인하게 되면 아래와 같은 구조로 폴더 및 패키지가 생성.

djangogirls-tutorial/
	mysite/				<-Django프로젝트 관련 코드 컨테이너 폴더
		manage.py
		mysite/			<-이 Django프로젝트의 설정 관련 패키지
			__init__.py
			settings.py


쓰기가 불편하기 때문에 아래와 같이 바꿔주는데 해야할일은 다음과 같다.
1. Django코드 컨테이너 폴더의 이름을 app으로 변경
2. Django프로젝트 설정 패키지의 이름을 config로 변경
절대적인 것은 아니고 각 회사의 상황에 따라 다름.


djangogirls-tutorial/	<-이 프로젝트의 컨테이너 폴더 (Root폴더)
	app/				<-Django프로젝트 관련 코드 컨테이너 폴더
		config/			<-Django프로젝트의 설정 관련 패키지
			settings.py
	
	.gitignore			<-Django프로젝트(애플리케이션) 코드와 
	.git/				관계없지만 프로젝트를 위해 필요한 파일/폴더들
	requirements.txt
	...		

Django 프로젝트 설정 변경

mysite 폴더 -> 우클릭 -> Refactor -> Rename(shift+f6) -> app입력
- Search for references / Search in comments and strings
체크해제 후 app입력
- root 폴더 외에 모든 폴더는 패키지로 취급됨.
- 체크가 되어 있으면 안에 있는 폴더 및 파일들도 변형됨.

mysite 패키지 -> 우클릭 -> Refactor -> Rename(shift+f6) 
-> config입력
- 이때는 폴더 생성때와는 반대로 체크해제 했던걸 다시 입력함.

PyCharm은 현재 프로젝트 구조에서 가장 상위폴더를 파이썬 Source의 root로 인식한다

project/	<-python 실행
	project_module1.py
	project_module2.py
	pac1/
		__init__.py
		pac1_module.py
		pac2/
			__init__.py
			pac2_module.py
			pac2_module2.py
			
			pac3/
				__init__.py

## python을 root에서 시작했을 때
# project_module1을 가져올때
import project_module1

# pac1패키지 내의 pac1_module을 가져올 때
from pac1 import pac1_module

# pac2패키지 내의 pac2_module을 가져올 때
from pac1.pac2 import pac2_module

## 하위 패키지에서의 동작
# pac2_module.py에서 pac2_module2.py를 가져오고 싶을 경우
(pac2_module.py의 내용)
from         . import pac2_module2 <- .은 현재 위치의 패키지
from pac1.pac2 import pac2_module2

# pac2_module.py에서 pac2_module2.py를 가져오고 싶을 경우
from   .. import pac1_module	<- 밑에 있는 코드와 같은 의미
from pac1 import pac1_module

## python을 root에서 시작했을 때
# project_module1을 가져오려면
불가능
  • root 폴더를 기준으로 파이썬 코드가 서로를 참조하면서 왔다갔다 가능
  • root 폴더가 어디냐에 따라 모듈을 불러옴에 있어 에러가 날 수도 있음.
    • 따라서, root 폴더를 지정하고 프로젝트 개발을 시작해야 함.

Root 폴더 설정

  • PyCharm에서 루트 폴더 할거 우클릭
  • 아래쪽 Mark Directory as -> Sources Root 선택
  • 해당폴더는 파란색으로 변하면서 패키지 표시가 사라짐

requirements.txt 생성

  • 파이썬 코드와 별개로 어떤 라이브러리 버전을 사용하고 있는 기록해야 함.

  • git에 의해 관리된 소스코드를 누군가 클론해서 실행했을때 완벽히 실행되어야 하기 때문.

    pip freeze > requirement.txt(관용적으로 쓰는 파일명)
    
  • requirement.txt파일이 생성되고 버전이 기록이 됨.

여기까지 하는게 장고프로젝트 하기 전 기본설정.

git commit하기

>>> git stauts
		.gitignore
        app/
        requirements.txt

>>> git status -u
		.gitignore
        app/config/__init__.py
        app/config/settings.py
        app/config/urls.py
        app/config/wsgi.py
        app/manage.py
        requirements.txt

>>> git add -A
>>> git commit -> vi 상태가 되고 자세한 내용을 기록

Comments