Django

Jina·2020년 4월 5일
0

Django

목록 보기
2/11

Django Tutorial, Django girls, MDN, 예제로 배우는 파이썬 프로그래밍을 이용하여 공부한 내용 + wecode에서 배운 내용 정리

Django란

파이썬으로 만들어진 오픈소스 웹 어플리케이션 프레임워크(web application framework)
웹 어플리케이션을 개발할 수 있도록 도와줌

Django의 구조

웹 어플리케이션의 요청 / 응답

웹 어플리케이션이 요청을 받고 응답을 하는 과정은 아래와 같음

  1. 웹 어플리케이션이 웹 브라우저(웹 클라이언트)의 HTTP 요청을 받음
  2. URL / GET 데이터 / POST 데이터 등의 정보를 이용하여 요구사항 파악
  3. 필요한 작업 수행
  4. 응답(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 타입일 필요는 없음)

서버 실행/ 동작

  • 서버 실행 / 동작 순서
    http request --> urls --> views --> models(DB)

  • 서버 구현은 서버 동작 순서와 반대로 진행하면 좋음
    models.py --> views.py --> urls.py --> request

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추가는 아래와 같이 할 수 있음

실행 전 아래의 명령어로 shell에 함수 import해두기

 from app이름.models import 함수

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로 하면 내 컴퓨터의 시간에 맞추게 함

0개의 댓글