3강Django 프로젝트 설계
https://www.youtube.com/watch?v=Go-NZbOgcUE
04강데이터베이스(ORM)
https://www.youtube.com/watch?v=fTWNpn0-fu0
URLconf - tempProject/tempPjt/urls.py ->파일 위치
path('studnet/register/', views.student_register),
url(클라이언트 요청 url)view(함수 또는 메소드)
이렇게 맵핑해놓음
def registerStudent(request): #데이터 베이스 등을 이용한 프로그램 실행 결과
return HttpResponse() #response 객체
클라이언트의 요청에 따른 애플리케이션 실행 결과를 template(html),
에러메시지 등을 이용해서 클라이언트한테 response한다
ORM(Object relational mapping) 사용
class student(models.Model):
s_name = models.CharField(max_length=100) ->필드
s_major = models.CharField(max_length=100) ->필드
s_age = models.IntegerField(default=0) ->필드
s_grade = models.IntegerField(default=0) ->필드
s_gender = models.CharField(max_length=30) ->필드
CharField : 문자열
IntegerField : 숫자열
max_length=100 : 최대길이 100
default=0 : 기본값 0
결과:
studentstudent 테이블 생성
애플리케이션이름클래스명(소문자)
tempProject/tempPjt/settings.py에서 Template 디렉토리 정의
settings.py 프로젝트의 전체적인 설정을 담당한다.
개발모드와 운영모드 설정
DEBUG = True #개발모드
DEBUG = False #운영모드
ALLOWED_HOSTS = [서버고유 IP주소(운영모드), 사설IP또는 빈칸(개발)]
python manage.py migrate ->관리자 모드, 사용자 및 그룹 테이블 생성
python manage.py makemigrations 데이터베이스 변경사항 확인
python manage.py migrate 데이터베이스 변경사항 반영
python manage.py createsuperuser -> 관리자 계정 생성
이후 이름, 주소 비밀번호를 입력
python manage.py runserver 0.0.0.0:8000 ->서버구동(모의)
이후 클라이언트 화면 뜸
클라이언트화면: 127.0.0.1:8000
admin 화면: 127.0.0.1:8000/admin
더 쉽게 만들기 위해 SQL을 맵핑함 ->ORM
models.py에 테이블 클래스 정의 후 admin.py에 등록 과정 실습
장고 shell모드 실행
레코드 추가(create) - 데이터 생성
from students.models import Student
qs = Student(s_name='ohjongchan', s_major='computer', s_age=24,s_grade=2, s_gender='M')
qs.save()
파이썬과 같은 문법, 마지막에 .save() 을 입력해야 저장됌
레코드 읽기(read) - 데이터 검색
데이터 전체: QuerySet 타입으로 반환
qs = Student.objects.all()
print(qs)
<QuerySet [<Student: ohjongchan>, <Student: ohjongchun>, <Student: ohbyeongmin>]>
type(qs)
<class 'django.db.models.query.QuerySet'>
데이터 한개: Student 타입으로 반환
qs = Student.objects.get(s_name='ohjongchan')
type(qs)
<class 'students.models.Student'>
데이터 다수: 첨자([])를 이용한 접근
qs = Student.objects.all()
qs
<QuerySet [<Student: ohjongchan>, <Student: ohjongchun>, <Student: ohbyeongmin>]>
qs[1]
<Student: ohjongchun>
데이터 한개: '.'를 이용한 접근
qs = Student.objects.get(s_name='ohjongchan')
qs
<Student: ohjongchan>
qs.s_major
'computer'
레코드 읽기(read)- 데이터 필터(filter)
_lt: ~보다 작다
_lte: ~보다 작거나 같다
_gt: ~보다 크다
_gte: ~보다 크거나 같다
_isnull: null인 자료 검색
_contains: 특정 문자열을 포함하는 자료 검색
_startwith: 특정 문자열로 시작하는 자료 검색
_endwith: 특정 문자열로 끝나는 자료 검색
데이터 정열
order_by('') 오름차순
order_by('-')내림차순
레코드 업데이트(update) - 데이터 수정
qs.s_major
'computer'
qs.s_major='mathematics'
qs.save()
qs.s_major
'mathematics'
레코드 삭제(delete) - 데이터 삭제
qs.delete()
모르는 내용:
Template 에 대한 추가적인 정보가 필요
SQL, ORM에 대한 내용 필요
검색해본 내용:
구글에 '장고 template' 검색, 아래 주소를 통해 장고 프레임워크에 대해 확실하게 이해되고 template의 역할 확실하게 숙지함
https://velog.io/@gndan4/Django-%EC%9B%B9-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-%EC%9E%A5%EA%B3%A0-%EA%B8%B0%EB%B3%B8-%EC%84%A4%EC%A0%95-Template-HTML-Form-URL
구글에 'SQL, ORM' 검색, 아래 주소를 통해 둘에 대한 기본적인 내용과 차이점을 숙지함
https://velog.io/@mu1616/ORM-SQL-Mapper-%EC%B0%A8%EC%9D%B4