- 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 |