Django Tutorial, Django girls, MDN, 예제로 배우는 파이썬 프로그래밍을 이용하여 공부한 내용 + wecode에서 배운 내용 정리
파이썬으로 만들어진 오픈소스 웹 어플리케이션 프레임워크(web application framework)
웹 어플리케이션을 개발할 수 있도록 도와줌
웹 어플리케이션이 요청을 받고 응답을 하는 과정은 아래와 같음
img ref) https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Introduction
URLconf(URL configuration / URL mapper)을 생성하기 위해서 필요한 파일
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),
]
로직을 담당하는 파일
웹 클라이언트로부터 HTTP 요청을 수신하고 HTTP 응답을 반환하는 요청 처리 함수
Model을 통해 요청을 충족시키는 데 필요한 데이터에 접근
탬플릿에게 응답의 서식 설정을 맡김
데이터 구조를 정의하고 데이터베이스의 기록을 관리(추가,수정,삭제)
데이터 베이스와 소통하게 해주는 역할 (model을 이용하여 database를 관리할 수 있음)
파일의 구조나 레이아웃 정의
실제 내용을 보여주는데 사용되는 플레이스 홀더를 가진 텍스트 파일
HTML 탬플릿을 이용하여 페이지를 만들고 model에서 가져온 데이터로 채움 (탬플릿이 꼭 html 타입일 필요는 없음)
서버 실행 / 동작 순서
http request --> urls --> views --> models(DB)
서버 구현은 서버 동작 순서와 반대로 진행하면 좋음
models.py --> views.py --> urls.py --> request
django에서는 model을 이용하여 DB를 관리할 수 있음
models.py의 변경사항(수정, 생성 등)를 DB에 적용하는 과정을 migration이라고 함
models.py의 변경사항을 파일로 생성
makemigrations app이름 사용전에 app을 등록해줘야함
등록은 settings.py의 INSTALLED_APPS에
적용되지 않은 migration들을 적용시킴
migration 적용 현황 확인
migtation한 내역을 sql 테이블을 생성해주는 명령어
shell --> model
shell을 실행하는 명령어
shell에서 data추가 등을 할 수 있음
shell에서 data추가는 아래와 같이 할 수 있음
실행 전 아래의 명령어로 shell에 함수 import해두기
from app이름.models import 함수
아래의 예시와 같이 추가할 내용을 입력함
class명.objects.create(name='2cong',email='2cong@naver.com',password='1234')
아래의 예시와 같이 추가할 내용을 입력함
class명(name='2cong',email='2cong@naver.com',password='1234').save()
아래의 방법들로 shell에 입력한 data를 불러올 수 있음
입력했던 모든 data들을 가져오는 방법
쿼리 set안의 객체로 return 됨
쿼리 set은 list같은 느낌
가져오고 싶은 값을 입력하면 그 data를 가지고 옴
아래의 예시와 같이 사용
class명.objects.get(name='2cong')
가져오고 싶은 값이 하나일 때 사용가능
단일객체로 return 됨
--> 객체로 불러오면 아래와 같이 사용가능
a=class명.objects.get(name='2cong')
a.name = 2cong
아래 예시와 같이 사용
class명.objects.filter(name='2cong')
위와 같이 사용하면 이름이 2cong인 자료를 모두 가지고옴
쿼리 set안의 객체로 return됨
입력한 모든 값을 가져옴
쿼리 set안의 dictionary로 return됨
아래의 예시와 같이 입력하면 값을 지우거나 업데이트 할 수 있음
class명.objects.filter(id=4).delete()
class명.objects.filter(id=3).update(name='abc')
SECRET_KEY = '$5vt4zq)fq_2n#m9668(p+^2lg#$3#z9zb#yh68)aq9%f7#5#w'
암호화 키
배포할 때 소스코드 등에 노출하면 안됨
DEBUG = True
True가 기본설정, False면 오류가 어디서 생겼는지 알려주지 않음
개발할 때는 True로 해두고 배포할 때는 False로 해두기
ALLOWED_HOSTS = []
접근 가능한 ip대역 등 설정 가능
[*]로 설정하면 모두에게 공개 (오픈되어있는 페이지)
회사내 공유 등 정해진 사람만 봐야하는 페이지면 회사 ip등 넣어서 접근 가능한 범위 지정
장고가 어플을 관리하고 실행하게 하려면 이 리스트 내부에 포함시켜야 함
새로운 어플을 만들면 이곳에 등록해주기
auth기능을 사용할 때 password 검증하는 부분
ex) 대/소문자 등으로 password 검증하는 부분
서버의 언어 설정
한글로 바꾸려면 'ko'로
시간 설정
True로 하면 위에서 지정한 time_zone의 시간에 맞추고
False로 하면 내 컴퓨터의 시간에 맞추게 함