월 - 1,2,3
화 - 4,5,6
수 - 7
목 - 복습
금 - 복습
1. 웹프로그래밍과 Django
네트워크
네트워크로 연결되어 있는 범위 안에서 웹 서비스 이용 가능
Client & Server
•
client : 서버에 접근해서 데이터를 받기위해 사용하는 것 - request
•
server : 제공해주는 서비스가 있는 곳, 특정 데이터가 모여있는 곳 - response
HTTP의 특징
1.
클라이언트가 서버에 요청
2.
서버는 그에 맞는 데이터를 찾아서 작업
3.
서버가 클라이언트에 응답
4.
연결 해제(HTTP 가장 큰 특징)
쿠키 : 데이터가 PC에 머뭄, 쿠키값 생성해서 통신할 떄 비교해서 연결 유지
세션 : 데이터가 서버에 머뭄, 세션값 생성해서 통신할 때 비교해서 연결 유지, 보안 좋음
HTTP 처리 방식
1.
POST : 새로운 글을 생성, 요청 메시지에 데이터를 담음, 보안에 강함, django에서 주로 사용
2.
GET : 데이터를 얻길 원할 때, URL에 데이터가 노출됨, 데이터 길이에 제한, 보안에 취약
3.
PUT : 기존 서버에 있는 데이터를 수정하고 싶을 때
4.
DELETE : 작성한 글 수정하고 싶을 때
URL
프로토콜 : 어떤 통신 규약을 이용해서 서버와 통신할지
REST와 Django url 맵핑
맵핑해서 함수를 호출시키자 !
서버 구성
client - 웹서버 - 애플리케이션 서버 - DB
웹 서버 : 주로 정적인 데이터 요청 처리, 동적일 경우 애플리케이션 서버한테 전달
애플리케이션 서버 : 주로 동적인 데이터 요청 처리, database 연동
2. Django 설치 및 프로젝트 생성
django
pip : PyPI(Python package index)의 sw패키지를 사용하기 위한 명령어
python -m pip insatll --upgrade pip : 명령 프롬프트에서 pip 업그레이드
python install Django : 장고 설치
pip install Django —upgrade : 장고 업그레이드
<장고 삭제하기>
장고가 설치되어 있는 디렉토리를 삭제
python —c "import django; print(django.__path__)" : 장고 설치 경로 확인
django-admin startproject hello : hello 프로젝트 생성
MVT 패턴
MVC 패턴 : 유지 보수 측면에서 효율적
MVT 패턴 : 거의 똑같은 기능인데 이름만 바꿈
3. Django 프로젝트 설계
django framework 흐름도
URLconf(urls.py)
path('student/register/', views.student_register) : URL(클라이언트 요청 URL), view(함수 or 메서드)
View(views.py)
사진
def registerStudent(request):
# 데이터 베이스 등을 이용한 프로그램 실행 결과
return HttpResponse()
Python
복사
클라이언트의 요청에 따른 애플리케이션 실행결과를 template, 에러메시지 등을 이용해서 클라이언트한테 response 함
Model(models.py)
<ORM(Object Relation Mappin) 사용>
•
애플리케이션 이름 +_+ 클래스명(소문자)
•
class를 이용한 맵핑
Template(*.html)
어플리케이션 디렉토리 안에 템플릿 디렉토리 생성해서 써야함
프로젝트 설정
settins.py - 프로젝트의 전체적인 설정을 담당함
모든 애플리케이션을 설정파일 내에 등록해야함(클래스명까지)
기본 사용자 및 그룹 테이블 생성
장고는 기본적으로 관리자모드 제공해줌
4. 데이터베이스(ORM)
테이블 생성
1.
디렉토리 이동
2.
프로젝트 생성
3.
어플리케이션 생성
4.
setting 파일내에 어플리케이션 등록 (패키지.앱.클래스)
5.
6.
7.
models.py에 테이블 클래스 정의 후 admin.py에 등록
•
필드명을 클래스의 속성으로 정의 해주기
•
타입, 데이터의 길이 작성
•
str 메소드 추가 해야함 !
DB 변경사항 migrate 통해서 반영하기
레코드 다루기
만든 클래스 import 하기
<데이터 추가하기>
qs = Student(s_name='honggildong', s_major='computer', s_age=21, s_grade=2, s_gender='M')
qs.save() : 속성 생성
<레코드 읽기 - 데이터 검색 >
Student.objects all() : 데이터 전체 QuerySet 타입으로 반환
•
접근할 때는 인덱스 활용해서 가져올 수 있음
qs = Student.pbjects.get(s_name='honggildong') : 데이터 한개 반환
•
'.'로 접근
<레코드 읽기 - 데이터 필터>
•
__lt : ~보다 작다
•
__lte : ~보다 작거나 같다
•
__gt : ~보다 크다
•
__gte : ~보다 크거나 같다
•
__isnull : null인 자료 검색
•
__contains : 특정 문자열을 포함하는 자료 검색
•
__startwith : 특정 문자열로 시작하는 자료 검색
•
__endwith : 특정 문자열로 끝나는 자료 검색
<레코드 읽기 - 데이터 정렬>
•
order_by(' ') : 오름차순
•
order_by('-') : 내림차순
<레코트 업데이트 - 데이터 수정>
•
변환하고 싶은 값의 이름 쓰고 = 이용하면 됨
•
save() 함수 마지막에 써야함
<레코드 삭제 - 데이터 삭제>
qs.delete() : 물어보고 삭제하는 거 없어서 날릴수도 있으니 조심
5. 학사관리 프로그램 만들기 1
django/sProject/students
프로젝트, 애플리케이션 생성하고 setting 파일내에 등록 해주기
model.py에서 데이터베이스 생성하고 str 메서드 반환해주기
admin.py에서 생성한 데이터베이스 import 해주기
makemigrations, migrate로 데이터베이스 변경사항 반영해주기(모듈 오류 났을때 setting 파일 확인해보자)
관리자 생성하고 서버 구동!
6. 학사관리 프로그램 만들기 2
•
URLconf - views - template 연결하기
•
views에 reaStudentAll에서 context가 왜 없으면 안될까..?