주니어 데이터 엔지니어 우솨's 개발일지

Django 기본 본문

Django

Django 기본

우솨 2024. 4. 28. 17:04

cmd에서 실행
pyhon 가상 환경 생성
py -m venv project-name

가성환경 활성화
django-project\Scripts\activate.bat

Django 프로젝트 생성
django-admin startproject mysite

생성한 프로젝트를 서버에서 실행
python manage.py runserver

프로젝트란?
하나의 웹사이트라고 생각하면 된다.
하나의 프로젝트는 여러개의 앱으로 구성된다.

app생성
python manage.py startapp polls

관계형 데이터베이스(RDB)
데이터를 행과 열로 이루어진 테이블의 형태로 구성하고, 테이블 간의 관계를 정의하는 데이터베이스이다.
테이블(Table)
데이터베이스에서 행과 열로 구성되어 있는 데이터의 집합을 의미한다.

model.py
모델을 테이블 별로 읽어서 테이블에 저장되어 있는 값을 코드에서 읽을 수 있도록 도와준다. (ORM)
1. 모델생성
2. 모델을 테이블에 써주기 위한 마이그레이션을 만든다.
3. 모델에 맞는 테이블을 만든다.

 

migration 파일 생성하기

python manage.py makemigrations polls

 

migration으로 실행될 SQL 문장 살펴보기

python manage.py sqlmigrate polls 0001

 

migration 실행하기

python manage.py migrate

 

Django에서 sqlite3로 데이터베이스 열기

sqlite3 db.sqlite3

 

migration 롤백

python manage.py migrate polls 0001

 

Django Admin계정 생성

python manage.py createsuperuser

 

admin.py에서 모델 등록

admin.site.register(Question) #models 안의 Question 클래스

admin.site.register(Choice) #models 안의 Choice 클래스

 

장고 쉘 실행

python manage.py shell

 

모든오브젝트 가져오기

Question.objects.all()

 

현재 날짜와 시간 구하기

from datetime import datetime

datetime.now()

 

from django.utils import timezone

timezone.now()

 

쉘 레코드 생성

q.choice_set.create(choice_text='b')

저장

q.save()

 

쉘 레코드 내용 추가하기

q.question_text = q.question_text + '???'

 

해당 오브젝트 삭제

choice.delete()

 

필터링

Question.objects.get(id=1)  #하나가 넘으면 에러 발생

Question.objects.filter(pub_date_year=2023) #여러개 가능

반대 = filter대신 exclude

startswith='a' a로 시작

contains = 'a' a포함

 

 

gt = greater than 이상 gt=0 # 0이상

lt = less than 이하

 

쿼리 가져오기

print(Question.objects.filter(pub_date_year=2023).query)

 

정규표현식

Question.objects.filter(question_text__regex=r'^휴가.*어디')

-휴가로 시작 어디 포함

 

timedelta 날짜 계산

timedate.now() + timedelta(days=1, hours=1, minutes=30)

-1일 1시간 30분후의 날짜와 시간 계산

'Django' 카테고리의 다른 글

테스트 기능(Test)  (0) 2024.04.28
유저(User)와 기능(투표, 질문)  (0) 2024.04.28
시리얼라이저(Serializer)와 에러(Error)  (0) 2024.04.28
뷰(View)와 템플릿(template)  (1) 2024.04.28