📢 공지사항
home
💻

Django 2

상태
박소연
배정

웹프로그래밍과 Django

네트워크

모든 사물이 네트워크로 연결 → 웹 서비스를 사용할 수 있음
Client: server를 통해 무언가 하고자 하는 모든 것 크게 device & software (Web Browser, App, 명령 프롬프트...) → request
HTTP: 수많은 Client와 Server을 연결해주는 통신 프로토콜
Server: 특정한 데이터가 모여있는 곳 → response

HTTP의 특징

1.
서버에 요청연결
2.
요청에 따른 작업
3.
클라이언트에 응답
4.
연결 해제 (Client가 많아! 계속 연결 어려워서 연결을 맺었다 끊었다)
→연결을 유지하기 위해서 쿠키 또는 세션 이용
(ex. 로그인 상태, 쇼핑몰 장바구니)
쿠키: PC에서 쿠키 값을 만들어 Server로 보내고 다시 통신할 때 쿠키 값을 서로 비교해서 연결을 유지하는 것처럼 보이게 함
세션: Server에서 세션 값을 만들어 PC로 보내고 다시 통신할 때 세션 값을 서로 비교해서 연결을 유지하는 것처럼 보이게 함 → 보안 Good

HTTP 처리 방식

Client Server DB
POST : 새로운 글을 입력해서 서버에 끼워넣고 싶을 때 → create(생성)
요청 메시지에 데이터를 담음
Django에서 주로 사용함
상대적으로 보안에 강함
GET : 내가 어떠한 데이터를 얻어오고 싶을 때 → read(조회)
URL에 데이터가 그대로 노출됨
데이터 길이에 제한 있음
상대적으로 보안에 취약
PUT : 기존 서버의 데이터를 수정하고 싶을 때 → update(수정)
DELETE : 내가 작성한 글을 삭제하고 싶을 때 → delete(삭제)

URL

-URL 기본 형태
https://search.naver.com/search.naver?query=weather
프로토콜 도메인(호스트) 경로 쿼리(요청)
서버 진입 서버의 어디까지 갈 거니
-REST URL 형태
https://search.naver.com/search/today/weather
URL 맵핑 (데이터)스트링
→맵핑 규칙을 정해놓고 그에 따라 실행될 함수를 호출

서버 구성(웹서버→애플리케이션 서버)

Web Server
주로 정적인 데이터 요청 처리 (ex. 그림 불러와)
Client의 요청을 받고 동적인 데이터 요청 시 애플리케이션 서버에 전달
애플리케이션 서버에서 받은 동적인 데이터를 다시 Client에 전달
Application Server
주로 동적인 데이터 요청 처리(ex. 오늘의 날씨 알려줘)
Database 연동

MVC 패턴

client의 request를 controller가 받아서 control 한다.
database가 필요하면 Model로 위임을 하고 Model이 data를 Control에 다시 보냄, 그러면 controller는 data 가공을 하고 response를 하기 위해 view를 찾아가 적합한 view를 선택해 client에게 response

MVT 패턴

django에서는 view에 해당되는 것을 Template으로, Control에 해당되는 것을 View로

Django 프로젝트 설계

URLconf(urls.py)

urlpatterns=[
path('student/register/', views.student_register),
#클라이언트 요청 URL, view(함수 또는 메서드)
]

View(views.py)

def student_register(request):
#요청에 따라 데이터 베이스 등을 이용한 프로그램 실행 결과
return HttpResponse()
request에 따른 애플리케이션 실행 결과를 Template(html), 에러메시지 등을 이용해서 response 한다.

Model(models.py)

ORM 방식 사용
class Student(models.Model):
s_name = models.CharField(max_length=30)
students(애플리케이션 이름)_student(클래스명) 테이블 생성

Template(*.html)

Django에서 필요한 Template 파일들을 찾을 수 있게 알려줘야 함
INSTALLED_APPS=[#경로 이름]
사용자 및 그룹 테이블 생성
python manage.py migrate
데이터베이스 변경사항 반영
python manage.py makemigrations → 변경된 내용이 있는지 검사
python manage.py migrate → 변경된 내용 적용
관리자 계정 생성
python manage.py createsuperuser
서버 구동
python manage.py runserver

데이터베이스(ORM)

레코드 다루기

class.objects.all()→데이터 전체(QuerySet 타입으로 반환)
class.objects.get()→데이터 한개(Student 타입으로 반환)

레코드 읽기

데이터 필터
class.objects.filter(내가 원하는 데이터.다양한 함수)
_lt: ~보다 작다
_lte: ~보다 작거나 같다
_glt: ~보다 크다
_gte: ~보다 크거나 같다
_isnull: null인 자료 검색
_contains: 특정 문자열을 포함하는 자료 검색
_startwith: 특정 문자열로 시작하는 자료 검색
_endwith: 특정 문자여로 끝나는 자료 검색