Django - djangogirls-tutorial blog만들기 1, 가상환경 설정, requirements.txt

|

패스트캠퍼스 웹 프로그래밍 수업을 듣고 중요한 내용을 정리했습니다.
개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
이 포스팅에서는 djangogirls-tutorial을 보고 정리했습니다.


가상환경 설정

projects/
  django/
    djangogitls-tutorial/
      git init
      .gitignore(python, django, mac os, linux, git, pycharms+all)

      pyenv virtualenv 3.6.5 <가상환경 이름>
      pyenv local <가상환경 이름>

      - pycharm interpreter설정
      usr/loval/var/pyenv/versions/<가상환경 이름>/bin/python

django 설치하기

pip install django~=1.11.0

우리는 django 버전을 1.11.0으로 설정했다.

django 프로젝트 시작

django-admin startpoject mysite

의미는 mysite라는 django 프로젝트를 시작하겠다- 라는 의미이다.

즉, startpoject를 하는 동시에 mysite라는 폴더가 생성된다. 이때, django안에 mysite 폴더가 두개가 생기면서 헷갈릴 수 있으니

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

1.django코드 컨테이너 폴더의 이름을 app으로 변경 2.django프로젝트 설정 패키지의 이름을 config로 변경

djangogitls-tutorial/ <- 이 프로젝트의 컨테이너 폴더 (Root폴더)
  app/ <- django프로젝트 과년 코드 컨테이너 폴더
    config/ <- django 프로젝트의 설정 관련 패키지
      settings.py

  .gitignore <-django프로젝트(애플리케이션) 코드와 관계없지만 프로젝트를 위해 필요한 파일/폴더
  .git/
  requirements.txt
  ...

python app.py

이후 app폴더로 들어가 blog폴더를 생성한다.

cd app
python manage.py startapp blog

그리고 config.setting로 들어가

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

blog를 추가한다.

이는 애플리케이션을 생성한 후 장고에 사용해야한다고 알려주는 과정이다.

모듈 가져오기

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

그래서 지금은 project 폴더의 가장 상위 폴더를 root폴더로 인식하고 있는데, 우리는 app폴더를 root폴더로 인식할 수 있도록 변경해야한다. (일단 이 부분은 나중에)

project/
  project_module1.py
  project_module2.py
  pac1
    __init__.py
    pac1_module.py
      pac2
        __init__.py
        pac2_module.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에서 pac1_module.py를 가져오고 싶을 경우

from .. import pac1_module

from pac1 import pac1_module

python을 pac1에서 시작했을 때 project_module1을 가져오려면

불가능하다.

requirements.txt만들기

현재 우리의 django 버전은 1.11.0인데 언제든 우리가 다양한 버전의 django를 하기 위해서는 requirements.txt를 만드는게 좋다.

pip list

Package        Version  
-------------- ---------
beautifulsoup4 4.6.0    
certifi        2018.4.16
chardet        3.0.4    
Django         1.11.13  
idna           2.6      
lxml           4.2.1    
pip            10.0.1   
pytz           2018.4   
requests       2.18.4   
setuptools     39.0.1   
urllib3        1.22  

pip freeze

beautifulsoup4==4.6.0
certifi==2018.4.16
chardet==3.0.4
Django==1.11.13
idna==2.6
lxml==4.2.1
pytz==2018.4
requests==2.18.4
urllib3==1.22

사실 django랑 pytz만 있으면 되는데, 나는 왜이렇게 많은건지?

pip freeze > requirements.txt

이렇게 하면 freeze에 있는 정보다 requirements.txt파일에 덮어씌워진다.


git add -A
git commit

cd app
python manage.py runserver