Django Tutorial, Django girls, MDN, 예제로 배우는 파이썬 프로그래밍을 이용하여 공부한 내용을 정리
Django란
파이썬으로 만들어진 오픈소스 웹 어플리케이션 프레임워크(web application framework)
웹 어플리케이션을 개발할 수 있도록 도와줌
Django의 구조
웹 어플리케이션의 요청 / 응답
웹 어플리케이션이 요청을 받고 응답을 하는 과정은 아래와 같음
- 웹 어플리케이션이 웹 브라우저(웹 클라이언트)의 HTTP 요청을 받음
- URL / GET 데이터 / POST 데이터 등의 정보를 이용하여 요구사항 파악
- 필요한 작업 수행
- 응답(Response) 반환
장고의 구조
img ref) https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Introduction
urls.py
- URLconf(URL configuration / URL mapper)을 생성하기 위해서 필요한 파일
- URLconf : URL과 일치하는 view를 찾기 위한 패턴의 집합
- 만약 지정된 URL 패턴과 일치하는 HTTP 요청이 수신되면 관련된 view함수가 요청을 전달
- url 경로에 관련된 정보가 있는 부분
- URL mapper의 구조
여기서 urlpatterns가 url mapper
list안에 path(), re_path() 메서드(함수)가 들어있는 형태
urlpatterns = [
path( , )
re_path( , )
]
첫번째 인수 : 일치시킬 경로(패턴), 이 인수는 url의 한 부분임 --> 수집되어서 view함수로 보내짐
두번째 인수 : 패턴이 일치할 때 호출되는 다른 함수
mapper의 예시
urlpatterns = [
path('admin/', admin.site.urls),
path('book/<int:id>/', views.book_detail, name='book_detail'),
path('catalog/', include('catalog.urls')),
re_path(r'^([0-9]+)/$', views.best),
]
views.py
- 로직을 담당하는 파일
- 웹 클라이언트로부터 HTTP 요청을 수신하고 HTTP 응답을 반환하는 요청 처리 함수
- Model을 통해 요청을 충족시키는 데 필요한 데이터에 접근
- 탬플릿에게 응답의 서식 설정을 맡김
models.py
- 데이터 구조를 정의하고 데이터베이스의 기록을 관리(추가,수정,삭제)
- 데이터 베이스와 소통하게 해주는 역할 (model을 이용하여 database를 관리할 수 있음)
Templates
- 파일의 구조나 레이아웃 정의
- 실제 내용을 보여주는데 사용되는 플레이스 홀더를 가진 텍스트 파일
- HTML 탬플릿을 이용하여 페이지를 만들고 model에서 가져온 데이터로 채움 (탬플릿이 꼭 html 타입일 필요는 없음)
Migrations과 Migrate
1. DB와 Model
django에서는 model을 이용하여 DB를 관리할 수 있음
models.py의 변경사항(수정, 생성 등)를 DB에 적용하는 과정을 migration이라고 함
2. python manage.py makemigrations
models.py의 변경사항을 파일로 생성
사용예시 : python manage.py makemigrations app이름
makemigrations app이름 사용전에 app을 등록해줘야함
등록은 settings.py의 INSTALLED_APPS에
3. python manage.py migrate
적용되지 않은 migration들을 적용시킴
사용예시 : python manage.py migrate app이름
4. python manage.py showmigrations
migration 적용 현황 확인
사용예시 : python manage.py showmigrations app이름
5. python manage.py sqlmigrate
migtation한 내역을 sql 테이블을 생성해주는 명령어
사용예시 : python manage.py sqlmigrate app이름 migration이름
DB
데이터베이스 필드
- CharField : 문자(character) 필드
- DateTimeField : 날짜와 시간(datetime) 필드
shell
shell --> model
python manage.py shell
shell을 실행하는 명령어
shell에서 data추가 등을 할 수 있음
1. Data 추가
shell에서 data추가는 아래와 같이 할 수 있음
class명.objects.create(추가할 내용)
아래의 예시와 같이 추가할 내용을 입력함
class명.objects.create(name='2cong',email='2cong@naver.com',password='1234')
class명(추가할 내용).save()
아래의 예시와 같이 추가할 내용을 입력함
class명(name='2cong',email='2cong@naver.com',password='1234').save()
2. Data 불러오기
아래의 방법들로 shell에 입력한 data를 불러올 수 있음
class명.objects.all()
입력했던 모든 data들을 가져오는 방법
쿼리 set안의 객체로 return 됨
쿼리 set은 list같은 느낌
class명.objects.get(가져오고 싶은것)
가져오고 싶은 값을 입력하면 그 data를 가지고 옴
아래의 예시와 같이 사용
class명.objects.get(name='2cong')
가져오고 싶은 값이 하나일 때 사용가능
단일객체로 return 됨
--> 객체로 불러오면 아래와 같이 사용가능
a=class명.objects.get(name='2cong')
a.name = 2cong
class명.objects.filter(가져오고 싶은것)
아래 예시와 같이 사용
class명.objects.filter(name='2cong')
위와 같이 사용하면 이름이 2cong인 자료를 모두 가지고옴
쿼리 set안의 객체로 return됨
class.objects.value()
입력한 모든 값을 가져옴
쿼리 set안의 dictionary로 return됨
3. Data 지우기 및 업데이트
아래의 예시와 같이 입력하면 값을 지우거나 업데이트 할 수 있음
class명.objects.filter(id=4).delete()
class명.objects.filter(id=3).update(name='abc')
settings.py
SECRET_KEY
SECRET_KEY = '$5vt4zq)fq_2n#m9668(p+^2lg#$3#z9zb#yh68)aq9%f7#5#w'
암호화 키
소스코드 등에 노출하면 안됨
DEBUG = True
DEBUG = True
True가 기본설정, False면 오류가 어디서 생겼는지 알려주지 않음
개발할 때는 True로 해두고 배포할 때는 False로 해두기
ALLOWED_HOSTS = []
ALLOWED_HOSTS = []
접근 가능한 ip대역 등 설정 가능
[*]로 설정하면 모두에게 공개 (오픈되어있는 페이지)
회사내 공유 등 정해진 사람만 봐야하는 페이지면 회사 ip등 넣어서 접근 가능한 범위 지정
INSTALLED_APPS
장고가 어플을 관리하고 실행하게 하려면 이 리스트 내부에 포함시켜야 함
새로운 어플을 만들면 이곳에 등록해주기
AUTH_PASSWORD_VALIDATORS
auth기능을 사용할 때 password 검증하는 부분
ex) 대/소문자 등으로 password 검증하는 부분
LANGUAGE_CODE = 'en-us'
서버의 언어 설정
한글로 바꾸려면 'ko'로
TIME_ZONE ='UTC'
시간 설정
USE_TZ = True
True로 하면 위에서 지정한 time_zone의 시간에 맞추고
False로 하면 내 컴퓨터의 시간에 맞추게 함
'Django' 카테고리의 다른 글
Westagram_1 (1) | 2020.04.11 |
---|---|
Django Tutorial (1) | 2020.04.08 |
가상환경 만들기 (0) | 2020.04.08 |
댓글