django_01_Setup and Settings

Seungju HwangΒ·2020λ…„ 8μ›” 19일
0

django

λͺ©λ‘ 보기
2/11
post-thumbnail

Setup

μ‹œμž‘ν•˜κΈ°μ— μ•žμ„œ μ„ΈνŒ… μ „ κ΅¬μ›Œμ£Όκ² μŠ΅λ‹ˆλ‹€.🍳

μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€μ–΄μ•Όκ² λ‹€!! μ‹ΆμœΌλ©΄ κ°€μž₯λ¨Όμ € κ°€μƒν™˜κ²½μ„ λ§Œλ“€μ–΄μ£Όκ³ , κ·Έ ν™˜κ²½μ•ˆμ—μ„œ ν•„μš”ν•œ 라이브러리λ₯Ό μ„€μΉ˜ν•˜κ³  ν•΄μ•Όν•©λ‹ˆλ‹€. 그런데 μ•„λž˜ κΈ€ λ‚΄μš©μ„ 보면 djangoμ„€μΉ˜->κ°€μƒν™˜κ²½μ„€μΉ˜ 순으둜 μ§„ν–‰λ˜κ³  μžˆμœΌλ―€λ‘œ λ°˜λŒ€λ‘œ κ°€μƒν™˜κ²½λ§Œλ“€κ³  κ·Έ μ•ˆμ—μ„œ django μ„€μΉ˜ν•˜λ©΄ λ©λ‹ˆλ‹€.

+ μ•„λž˜ νŒ¨ν‚€μ§€κ΄€λ¦¬μ™€ fixtureλŠ” 처음 μ›Ήλ§Œλ“€λ•ŒλŠ” μ‚¬μš©ν•  ν•„μš”κ°€ μ—†μλ‹ˆλ‹€.

β—Ύ μž₯κ³ 

파이썬 3.7.7 μ„€μΉ˜λ˜μ–΄ μžˆμ–΄μ•Όν•©λ‹ˆλ‹€. (3.5버전은 μž₯κ³ 2κ°€ μ„€μΉ˜κ°€ λ˜λ²„λ¦½λ‹ˆλ‹€.)

$ pip install django #μ΅œμ‹ λ²„μ „μ„€μΉ˜
$ pip install django==2.1.0  #νŠΉμ •λ²„μ Ό μ„€μΉ˜ν•˜κΈ°
  • μ„€μΉ˜ν™•μΈ
$ pip list
# python -m django --version

β—Ύ vscode

  1. django extension μ„€μΉ˜ν•˜κΈ°
  2. open settings(JSON) λ“€μ–΄κ°€μ„œ 볡뢙
"files.associations": {     
    "**/*.html": "html",     
    "**/templates/**/*.html": "django-html",     
    "**/templates/**/*": "django-txt",     
    "**/requirements{/**,*}.{txt,in}": "pip-requirements" }, 
 
"emmet.includeLanguages": {"django-html": "html"}

Settings

β—Ύ κ°€μƒν™˜κ²½ μ„€μ •

파이썬 인터프리터, 라이브러리, 및 μŠ€ν¬λ¦½νŠΈκ°€ "μ‹œμŠ€ν…œ 파이썬" (즉, 운영 체제 μΌλΆ€λ‘œ μ„€μΉ˜λ˜μ–΄ μžˆλŠ” 것)에 μ„€μΉ˜λœ λͺ¨λ“  λΌμ΄λΈŒλŸ¬λ¦¬μ™€ 격리 λ˜λŸ¬μžˆλŠ” 파이썬 ν™˜κ²½

Git Bash μ—μ„œ λ™μž‘ν•˜κ²Œ ν•˜λ €λ©΄, python 버전 3.7.2 이상이 ν•„μš” μ°Έκ³ 

1. 생성 및 ν™œμ„±ν™”

$ python -m venv [κ°€μƒν™˜κ²½μ΄λ¦„]
$ source [κ°€μƒν™˜κ²½μ΄λ¦„]/Scripts/activate

(κ°€μƒν™˜κ²½μ΄λ¦„)
$

2. μš΄μ˜μ²΄μ œλ³„ ν™œμ„±ν™”

  • Git Bash

    $ source [κ°€μƒν™˜κ²½μ΄λ¦„]\Scripts\activate
  • CMD

    $ source [κ°€μƒν™˜κ²½μ΄λ¦„]\Scripts\activate.bat
  • PowerShell

    $ source [κ°€μƒν™˜κ²½μ΄λ¦„]\Scripts\Activate.ps1
  • macOS

    $ source [κ°€μƒν™˜κ²½μ΄λ¦„]/bin/activate

3. λΉ„ν™œμ„±ν™”

$ deactivate

4. μ£Όμ˜μ‚¬ν•­

  • 가상 ν™˜κ²½μ„ λ§Œλ“€κ³  λ‚˜μ„œ 폴더(디렉터리)λ₯Ό λ‹€λ₯Έ 곳으둜 μ΄λ™μ‹œν‚€λ©΄ ν™œμ„±ν™”κ°€ μ•ˆ λœλ‹€.
  • 가상 ν™˜κ²½μ„ ν™œμ„±ν™”ν•˜λŠ” activate.bat, Activate.ps1, activate 파일 μ•ˆμ— ν˜„μž¬ 가상 ν™˜κ²½ ν΄λ”μ˜ κ²½λ‘œκ°€ λ‚΄μž₯λ˜μ–΄ 있기 λ•Œλ¬Έμ΄λ‹€.

0. in VSCode

  1. ctrl + shift + p -> python interpreter 선택
  2. ν™œμ„±ν™” ν•  κ°€μƒν™˜κ²½ 선택
  3. vscode μ’ŒμΈ‘ν•˜λ‹¨ 확인
  4. terminal ν™œμ„±ν™”

μ—¬κΈ°κΉŒμ§€ μ‹œν–‰ν–ˆλ‹€λ©΄ 이제 본격적인 MTV λ°©μ‹μ˜ 웹을 λ§Œλ“€ μ€€λΉ„κ°€ λλ‚œκ²λ‹ˆλ‹Ή

β—Ύ νŒ¨ν‚€μ§€ 관리

개발 ν™˜κ²½μ΄ λ°”λ€Œμ—ˆμ„ λ•Œ 일일이 νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•΄μ€˜μ•Ό ν•˜κ±°λ‚˜, ν˜‘μ—…μ„ ν•˜κ²Œ 됐을 λ•Œ 개발 쀑인 ν™˜κ²½μ„ μ˜¨μ „νžˆ λ„˜κ²¨ μ€˜μ•Ό ν•  λ•Œκ°€ μžˆλ‹€. 이λ₯Ό μœ„ν•΄ 개발 ν–ˆλ˜ ν™˜κ²½μ„ κΈ°λ‘ν•˜κ³  이λ₯Ό μƒˆλ‘œμš΄ ν™˜κ²½ 속에 ν•œλ²ˆμ— 이식할 수 μžˆλŠ” 방법이 μ‘΄μž¬ν•œλ‹€.

1. νŒ¨ν‚€μ§€ requiremtents 파일 생성

$ pip freeze > requirements.txt

2. νŒ¨ν‚€μ§€ requiremtents μ„€μΉ˜

$ pip install –r requirements.txt

β—Ύ Fixtures

Djangoκ°€ λ°μ΄ν„°λ² μ΄μŠ€λ‘œ import ν•  수 μžˆλŠ” 데이터 λͺ¨μŒ. 앱을 처음 μ„€μ •ν•  λ•Œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 미리 μ±„μ›Œμ•Ό ν•˜λŠ” 상황이 μ‘΄μž¬ν•˜λŠ”λ° μ΄λŸ¬ν•œ 초기 데이터λ₯Ό μ œκ³΅ν•˜λŠ” 방법 쀑 ν•˜λ‚˜

1. dumpdata usage

$ python manage.py dumpdata app_name.ModelName [--options]
# μ˜ˆμ‹œ
$ python manage.py dumpdata articles.Article --indent 4 > articles.json

2. loaddata usage

  • fixtures νŒŒμΌμ€ λ°˜λ“œμ‹œ app 디렉토리 μ•ˆμ— fixtures 디텍토리에 μœ„μΉ˜
$ python manage.py loaddata fixtures_path
# μ˜ˆμ‹œ
$ python manage.py loaddata articles/articles.json

----------------------------------

κ°œλ…

μœ„μ˜ μ½”λ“œλ“€μ— μ‚¬μš©λœ κ°œλ…λ“€μ„ μ •λ¦¬ν•˜λŠ” κ³΅κ°„μž…λ‹ˆλ‹€.

β—½ κ°€μƒν™˜κ²½ Virtual Environment

파이썬 인터프리터, 라이브러리, 및 μŠ€ν¬λ¦½νŠΈκ°€ "μ‹œμŠ€ν…œ 파이썬" (즉, 운영 체제 μΌλΆ€λ‘œ μ„€μΉ˜λ˜μ–΄ μžˆλŠ” 것)에 μ„€μΉ˜λœ λͺ¨λ“  λΌμ΄λΈŒλŸ¬λ¦¬μ™€ 격리 λ˜λŸ¬μžˆλŠ” 파이썬 ν™˜κ²½

μ°Έκ³ 1 μ°Έκ³ 2 μ°Έκ³ 3

  • 각 가상 ν™˜κ²½μ„ κ³ μœ ν•œ 파이썬 ν™˜κ²½μ„ 가지며 λ…λ¦½μ μœΌλ‘œ μ„€μΉ˜λœ νŒ¨ν‚€μ§€ 집합을 가짐

1. μ‚¬μš©μ΄μœ 

  • pip둜 μ„€μΉ˜ν•œ νŒ¨ν‚€μ§€λ“€μ€ Lib/site-packagesμ•ˆμ— μ €μž₯λ˜λŠ”λ° μ΄λŠ” λͺ¨λ“  파이썬 μŠ€ν¬λ¦½νŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.
  • 그런데 μ—¬λŸ¬ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜κ²Œ 되면 ν”„λ‘œμ νŠΈ λ§ˆλ‹€ λ‹€λ₯Έ λ²„μ „μ˜ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ ν•„μš”ν•  μˆ˜λ„ μžˆλŠ”λ° νŒŒμ΄μ¬μ—μ„œλŠ” ν•œ λΌμ΄λΈŒλŸ¬λ¦¬μ— λŒ€ν•΄ ν•˜λ‚˜μ˜ λ²„μ „λ§Œ μ„€μΉ˜κ°€ κ°€λŠ₯ν•˜λ‹€.
  • λ”λΆˆμ–΄ 각 λΌμ΄λΈŒλŸ¬λ¦¬λ‚˜ λͺ¨λ“ˆμ€ μ„œλ‘œμ— λŒ€ν•œ μ˜μ‘΄μ„±(dependency)이 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— μ•Œ 수 μ—†λŠ” 좩돌이 λ°œμƒν•˜κ±°λ‚˜ λ‹€λ₯Έ μ—¬λŸ¬ 문제λ₯Ό μΌμœΌν‚¬ 수 있게 λœλ‹€.
  • 파이썬의 κ²½μš°λ„ 같은 파이썬 버전, λ˜‘κ°™μ€ λͺ¨λ“ˆ 버전을 μ“΄λ‹€λŠ” 보μž₯이 μ—†λ‹€.

2. 가상 ν™˜κ²½ 지원 λͺ¨λ“ˆ

  • venv : Python 3.3 버전 이후 λΆ€ν„° κΈ°λ³Έλͺ¨λ“ˆμ— 포함됨. κ³΅μ‹λ¬Έμ„œ ꢌμž₯사항
  • virtualenv : Python 2 버전뢀터 μ‚¬μš©ν•΄μ˜€λ˜ κ°€μƒν™˜κ²½ 라이브러리, Python 3μ—μ„œλ„ μ‚¬μš©κ°€λŠ₯
  • conda : Anaconda Python을 μ„€μΉ˜ν–ˆμ„ μ‹œ μ‚¬μš©ν•  μˆ˜μžˆλŠ” λͺ¨λ“ˆ
  • pyenv : pyenv의 경우 Python Version Mangerμž„κ³Ό λ™μ‹œμ— κ°€μƒν™˜κ²½ κΈ°λŠ₯을 ν”ŒλŸ¬κ·ΈμΈ ν˜•νƒœλ‘œ 제곡 (macOS)

β—½ νŒ¨ν‚€μ§€ 관리

개발 ν™˜κ²½μ΄ λ°”λ€Œμ—ˆμ„ λ•Œ 일일이 νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•΄μ€˜μ•Ό ν•˜κ±°λ‚˜, ν˜‘μ—…μ„ ν•˜κ²Œ 됐을 λ•Œ 개발 쀑인 ν™˜κ²½μ„ μ˜¨μ „νžˆ λ„˜κ²¨ μ€˜μ•Ό ν•  λ•Œκ°€ μžˆλ‹€. 이λ₯Ό μœ„ν•΄ 개발 ν–ˆλ˜ ν™˜κ²½μ„ κΈ°λ‘ν•˜κ³  이λ₯Ό μƒˆλ‘œμš΄ ν™˜κ²½ 속에 ν•œλ²ˆμ— 이식할 수 μžˆλŠ” 방법이 μ‘΄μž¬ν•œλ‹€.

μ°Έκ³ 

1. pip freeze

  • ν˜„μž¬ ν™˜κ²½μ— μ„€μΉ˜λœ νŒ¨ν‚€μ§€λ₯Ό requirements format으둜 좜λ ₯
  • 각 νŒ¨ν‚€μ§€λ“€μ€ λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠλŠ” μˆœμ„œλ‘œ λ‚˜μ—΄

2. νŒ¨ν‚€μ§€ μš”κ΅¬μ‚¬ν•­ 파일 생성

  • requirements.txt 에 μžˆλŠ” λ‚΄μš©μ„ 가지고 μžλ™μœΌλ‘œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•΄μ€ŒμœΌλ‘œμ¨ ν•΄λ‹Ή ν”„λ‘œμ νŠΈκ°€ μ–΄λ–€ λ²„μ „μ˜ νŒ¨ν‚€μ§€λ₯Ό μΌλŠ”μ§€ κΈ°μ–΅ν•˜μ§€ μ•Šμ•„λ„ κ°œλ°œν™˜κ²½μ„ μ„€μ • ν•  수 μžˆλ‹€.
  • github μ—μ„œ ν”„λ‘œμ νŠΈλ₯Ό λ°›κ²Œλ˜λŠ” μ‚¬λžŒλ„ ν•΄λ‹Ή 파일이 있으면 κ°€μƒν™˜κ²½ ν•˜λ‚˜ λ§Œλ“  ν›„ λ°”λ‘œ μ„€μΉ˜κ°€ κ°€λŠ₯ν•˜λ‹€.
  • python 버전은 README에 λͺ…μ‹œν•˜λŠ” 것이 μ’‹λ‹€.

β—½ Fixtures

Djangoκ°€ λ°μ΄ν„°λ² μ΄μŠ€λ‘œ import ν•  수 μžˆλŠ” 데이터 λͺ¨μŒ. 앱을 처음 μ„€μ •ν•  λ•Œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 미리 μ±„μ›Œμ•Ό ν•˜λŠ” 상황이 μ‘΄μž¬ν•˜λŠ”λ° μ΄λŸ¬ν•œ 초기 데이터λ₯Ό μ œκ³΅ν•˜λŠ” 방법 쀑 ν•˜λ‚˜

μ°Έκ³ 

1. dumpdata

  • νŠΉμ • μ•±μ˜ κ΄€λ ¨λœ λ°μ΄ν„°λ² μ΄μŠ€μ˜ λͺ¨λ“  데이터λ₯Ό 좜λ ₯ μ°Έκ³ 

2. loaddata

  • dumpdataλ₯Ό 톡해 λ§Œλ“€μ–΄μ§„ fixtures νŒŒμΌμ„ λ°μ΄ν„°λ² μ΄μŠ€μ— import
profile
κΈ°λ‘ν•˜λŠ” μŠ΅κ΄€μ€ μ‰½κ²Œ λ¬΄λ„ˆμ§€μ§€ μ•Šμ•„μš”.

0개의 λŒ“κΈ€