본문 바로가기

내일배움 캠프/TIL

2023 04 06 내가 보려만든 django

django 시작 방법

$pip install django

pip install 을 통해서 django를 최신 버전으로 설치를 하고

$django-admin startproject <프로젝트이름>

이 명령어는 새로운 django 프로젝트를 생성을 하게 해줍니다

이렇게 생긴 프로젝트는 밑에와 같은 구조를 가지게됩니다

프로젝트이름/
    manage.py #Django 프로젝트를 관리하기 위한 명령행 유틸리티입니다
    프로젝트이름/
        __init__.py #해당 디렉토리를 파이썬 패키지로 인식하도록 합니다
        settings.py #Django 프로젝트의 설정 파일입니다.
        urls.py #Django 프로젝트의 URL 패턴을 정의하는 파일입니다
        asgi.py #ASGI서버를 사용할때 사용합니다
        wsgi.py #WSGI서버를 사용할떄 사용합니다

 

django 는 python manage.py 뒤에 붙는 명령어로 다양한 작업을 수행하게 되는데

이러한 명령어중 사용해본 것들만 사용법을 정리하면 아래와 같습니다

python manage.py startapp <애플리케이션이름> # 새로운 장고 애플리에키션 생성
python manage.py runserver # 로컬 개발 서버를 실행
python manage.py makemigrations #데이터 베이스 모델의 변경내용을 생성
python manage.py migrate #위에 생성된 마이그레이션 파일을 데이터베이스 스키마로 변경
python manage.py createsuperuseer #어드민 계정을 생성
python manage.py shell # shell을 엽니다

 

models.py

 

django 의 models.py는 데이터 베이스 모델을 정의하는 파일입니다

이 파일을 작성하기 위해서 고려 해야하는 사항들은

필드정의, 필드옵션,관계정의, 메타클래스 정의 등이있습니다

 

필드 정의란 데이터 베이스 모델에서 작성할 필드를 정리하는 것입니다.

title 은 CharField에 들어간다던가 하는 필드타입을 선언해주는것입니다

이중 많이 사용하게 되는 field타입들은 다음과 같습니다

models.AutoField #Integer 자료형으로, 자동으로 증가하는 ID 값을 저장합니다.
models.BigAutoField #BigInteger 자료형으로, 자동으로 증가하는 큰 ID 값을 저장합니다.
models.BinaryField #바이너리 데이터를 저장합니다.
models.BooleanField #True 또는 False 값을 저장합니다.
models.CharField #문자열을 저장합니다. max_length 파라미터를 사용하여 최대 길이를 설정할 수 있습니다.
models.DateField #날짜 값을 저장합니다.
models.DateTimeField #날짜와 시간 값을 저장합니다.
models.DecimalField #실수 값을 저장합니다.
models.DurationField #시간 간격 값을 저장합니다.
models.EmailField #이메일 주소를 저장합니다.
models.FileField #파일을 저장합니다.
models.FloatField #부동 소수점 값을 저장합니다.
models.ImageField #이미지 파일을 저장합니다.
models.IntegerField #정수 값을 저장합니다.
models.GenericIPAddressField #IP 주소 값을 저장합니다.
models.NullBooleanField #Null, True, False 값을 저장합니다.
models.PositiveIntegerField #양수 정수 값을 저장합니다.
models.PositiveSmallIntegerField #작은 양수 정수 값을 저장합니다.
models.SlugField #URL에 사용할 수 있는 값(알파벳, 숫자, 하이픈, 언더바)을 저장합니다.
models.SmallIntegerField #작은 정수 값을 저장합니다.
models.TextField #긴 문자열 값을 저장합니다.
models.TimeField #시간 값을 저장합니다.
models.URLField #URL 값을 저장합니다.

이와같이 필드를 정의하면서 필드 옵션 또한 정의를 해줘야하는데

필드 옵션이란  필드가 가질수있는 제약 조건 밑 동작을 정의하는것입니다

max_length를 통해 최대값의 제한을 준다던지 default로 기본값을 설정한다던지

하는게 필드옵션입니다

 

관계정의는 데이터 베이스 모델간의 관계를 정의하는 것을 의미합니다

django에서 ForeignKey, ManyToManyField, OneToOneField 등이 관계를 정의할때 사용합니다

 

마지막 으로 메타 클래스 정의는 class Meta를 통해서

데이터베이스의 이름 지정 인덱스 및 정렬 순서 같은 정보를 정의할수있습니다

 

urls.py

urls.py는 Django에서 URL 매핑을 담당하는 파일로, 사용자의 요청 URL과 매칭되는 view 함수를 호출하는 역할을 합니다

path('', views.index, name='index')

이와 같은 형식으로 작성이 되고 view. 뒤에있는 힘수 값을 view모델에서 가져오게된다

그리고 name인자는 해당 url 패턴의 이름을 지정하는건데 이것을 통해서 templates에서 

참조가 가능하다

views.py

views.py는 웹 어플리케이션의 로직을 처리하는 파일입니다.

사용자가 요청한 URL에 따라 적절한 함수를 호출하여, 요청에 대한 응답을 반환합니다.

 

url 요청이 들어오면 매핑해서 함수를 호출하거나 모델을 호출하거나

템플릿을 렌더링하거나 응답에 대해 반환을 해주는 역할을 하고있습니다