_won_
wonprogrammer
_won_
전체 방문자
오늘
어제
  • 분류 전체보기
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

블로그 메뉴

  • 방명록

티스토리

Github · Wonprogrammer
hELLO · Designed By 정상우.
_won_

wonprogrammer

woncoding/TIL

TIL | 9.23.금 [Python 장고 / Django 기초🐢]

2022. 9. 23. 23:47

- Python Django 실무 기초 [가상환경 / Django ORM / Django Admin / Django 사용자관리]

 

1. 가상환경

가상환경이란? 독립적인 파이썬 실행 환경을 의미한다. 가상환경을 생성하면 각각의 가상환경은 다른 환경에 영향을 미치지 않아, 각자 다른 종류와 버전의 패키지를 가질 수 있다.

 

[가상환경 구축 과정]

  • python3 -m venv venv → python3로, 만든다, 가상환경을, venv이름을 가진
    • pip3 list 👉 아직 글로벌 인터프리터로 선언되어 있어 이미 설치되어있는 패키지 list가 뜸
  • source venv/bin/activate → 만들어진 가상환경을 활성화 시켜준다(안시켜주면 할당되지 않음)
    • pip3 list 👉 기본 설정만 되어있음. 가상환경에서 개발할 프로젝트에 맞춰 새롭게 구성 가능
  • deactivate → 가상환경 종료

 

 

 

 


 

 

 

 

- Python Django 기초 🐢 |  VSCode 기준

 

1. 프로젝트 초기 세팅

 

[venv 세팅]

위에서 나온 가상환경 구축 과정과 동일 

+ source venv/bin/activate 가상환경 활성화 후 pip3 install django 패키지 설치

 

[.gitignore]

프로젝트를 Git 으로 관리하기 위해서 .gitignore 를 만들어준다.

 

→ 1) gitignore에 접속 후 나의 환경에 맞게 설정 (django, vscode, macOS... 등)

→ 2) 파일 복사 후 vscode에 .gitignore 파일 생성 후 복붙

→ 3) .gitignore 파일 안 제일 위에 (###Django### 안) venv 를 써준다 : 우리의 작업 공간 선언

 

→ 4) 이후 git 과 연동 

  • git 저장소 만들고
  • vscode 터미널에서 4-1) git init  
  • 4-2) git remote add origin 깃주소 복붙 
  • 4-3) git add .  
  • 4-4) git commit -m 'init'
  • 4-5) git push origin main (or master) 
  • 4-3) ~ 4-5) : git에 push하는 과정이기 때문에 수시로 업데이트 해줘야 됨

 

→ 5) 장고 프로젝트 시작 : django-admin startproject 프로젝트 파일명 .

  

 

+ 가상환경에 설치된 모듈들을 git에서 관리하기 위해

  • pip3 freeze > requirements.txt  로 저장 후
  • git add .  
  • git commit -m 'Add requirements.txt' 
  • git push origin main (or master) 

 


 

 

2. 애플리케이션 만들기

  • 1) 내가 만들 애플리케이션의 이름을 딴 앱 설치
    • python3 manage.py startapp 앱이름(복수형)
    • Git 에 push 해주기

 

(manage.py = 장고의 서버를 다룰 수 있게 해주는 .py 파일)

 

 

  • 2) 생성된 앱 폴더엔 아래의 파일 등 들이 있다.
    • admin.py : 관리자용 페이지, 이 파일안에서 만든 모델들은 관리자 페이지에 접근 가능
    • apps.py : 앱의 정보를 가지고 있는 곳 (수정 할 일 거의 없음)
    • models.py : !중요! 
    • tests.py : 테스트 코드로 기능을 확인해 볼 수 있음 (심화로 갈 수록 활용도 UP)
    • views.py : API 로직이 작성되는 곳

 

Main App
__init__.py __init__.py
asgi.py   admin.py
settings.py   apps.py
urls.py         models.py
wsgi.py tests.py
  views.py
  + Templates

 

 

[앱 등록]

앱 생성후 Main의 settings.py 👉 INSTALLED_APPS 에 앱 이름 적어줘서 등록 

 

[국가, 시간 설정]

Main의 settings.py 👉 LANGUAGE_CODE , TIME_ZONE 을 'ko-kr' , 'Asia/Seoul' 로 변경

 

[앱 실행]

python manage.py runserver

 

[앱 종료]

control + C  (not command)

 

 

 

 

3. Main과 App파일 간 연동

 

[Main / urls.py]

url을 따로 만들어 작성 후 어느 함수에 작동 되는지 명시해 줌 : 장점은 url만 한번에 모아 관리 할 수 있다.

  • 1)  Main / urls.py 에서 실행하고 싶은 함수는 App / views.py 에 있는 함수이다.
    • Main / urls.py   ←→  App / views.py 연동 과정
    • 1-1)  Main / urls.py 에  : from app이름 import views  작성 후
    • 1-2) path('url 명', views.함수명 ) 을 작성 해 경로 추가
  • 2-1)  App / views.py 
    • 2-1) Main / urls.py 에 연동 해준 함수를 App / views.py에 작성해준다.
# app/views.py

def 함수명(request):
	return render(request, 'url명.html')
    
    
👉 함수명은 경로에 적어준 함수명과 동일해야 됨
👉 render = 요청을 다시 응답으로 바꿔줄 때 index.html 을 사용해 응답

→ 들어온 요청에 무슨 응답을 할건지? 어떻게 보여줄건지?

    동작에 대한 함수를 작성해 주는 곳 + 무조건 첫 인자로 request가 와야한다.

 

+ 응답으로 보여줄 html 을 App폴더 안 templates 디렉토리를 만들어 작성해야 한다. (앱 관련 모든 html 파일은 여기서 관리한다.)

 

  • 2-2)  App / views.py 의 함수
# app/views.py

def dinner(request):  
    menus = ['한식', '일식', '중식', '분식']

    pick = random.choice(menus)
    context = {
        'pick' : pick,
    }
    return render(request, 'dinner.html', context)

→ 이렇게 단순히 요청에 대한 응답 뿐만 아니라 어떻게 응답을 할건지에 대해 함수를 작성해 줄 수 있다.

  • dinner.html을 views.py에 작성 된 함수에 맞게 작성해 주기 위해 {{'변수명'}} 을 이용해 불러와 준다.
  • (App안 templates : dinner.html 에서)

 

 


 

 

 

[Main / 변수 urls.py]

변수형 url은 주소를 변수처럼 이용해 동적으로 주소를 만들어 주는것을 말한다 ( 예) 유저별 페이지가 다를때... 등 )

 

경로를 추가할땐 자료형을 꼭 명시해 줘야 한다.

  • path('url 명/<자료형 : 변수url명>', views.함수명 ) 을 작성 해 경로 추가
  • App/views.py에 위와 동일하게 해당 url의 요청에 응답할 함수를 만들어 줌
# app/views.py

def dinner(request, 변수url명 ):
    menus = ['한식', '일식', '중식', '분식']

    pick = random.choice(menus)
    context = {
        'pick' : pick,
        'name' : 변수url명,  👉 바뀔때마다 url명도 바뀜
    }
    return render(request, 'dinner.html', context)

 

 

 

 

 


 

4. Django Template Language  aka. DTL

 

[for문 / if문]

파이썬과 다르게 {% ////////// %} 빗금 쳐진 부분에 for문과 if문을 작성해 줘야한다.

 

  • for문
<ul>
{% for i in list %}
<li> {{i}} </li>
{% endfor %} 👉 for 문이 끝났다는 것을 명시해줘야 함
</ul>


👉 .i 가 list 요소 번까지 출력 된 뒤 다음 명령어들 실행

[결과값]
////////////// : 반복문 이전 html
.i
.i
.i
.i
////////////// : 반복문 이후 html

 

 

 

  • if문
{% if 조건 1 %}
<p> 조건1 TRUE 일때 </p>

{% elif 조건 2 %}
<p> 조건2 TRUE 일때 </p>

{% else %}
<p> 조건1,2에 해당하지 않을때 </p>

{% endif %}  👉 if문이 끝나는것을 명시해줘야 함

'woncoding > TIL' 카테고리의 다른 글

TIL | 9.27.화 [Python 장고 / Django 기초🐢]  (0) 2022.09.27
TIL | 9.26.월 [Python 장고 / Django 기초🐢]  (0) 2022.09.26
TIL | 9.22.목 [Python 장고]  (0) 2022.09.22
TIL | 9.21.수 [자료구조와 알고리즘 / Python 복습 🐢]  (0) 2022.09.21
TIL | 9.20.화 [Python 복습 🐢]  (0) 2022.09.20
    'woncoding/TIL' 카테고리의 다른 글
    • TIL | 9.27.화 [Python 장고 / Django 기초🐢]
    • TIL | 9.26.월 [Python 장고 / Django 기초🐢]
    • TIL | 9.22.목 [Python 장고]
    • TIL | 9.21.수 [자료구조와 알고리즘 / Python 복습 🐢]
    _won_
    _won_
    Coding Practice blog

    티스토리툴바