🌈 약 3주 가량 django를 학습하고 프로젝트도 진행해보면서 어느정도 조금은 익숙하게 사용할 수 있을 것 같다는 느낌을 받는다. 오늘은 점심시간에 커피를 주문하고 메뉴판을 보면서 멍때리고 있었는데 커피류나 에이드류나 스무디 등 음료 종류가 모델로 보이고, 아메리카노, 카페라뗴 등 각각의 음료가 클래스로 찍어낸 인스턴스이겠구나 라는 생각이 들었다.
이제 머신러닝과 딥러닝도 익숙하게 다룰 수 있도록 노력해야겠다.
오늘 할 것
👉 거북이반 django 기초 강의 수강 완료하기, 머신러닝 강의 수강
오늘 배운 것
✔️ django 탬플릿 상속
- 웹사이트의 모든 페이지에서 보여지는 공통된 부분(네비게이터, 풋터 등)을 반복해서 작성하지 않아도 되도록 탬플릿을 상속할 수 있다.
- html을 만들 때 base.html을 상속받고 싶다면 {% extends 'base.html' %}를 입력하여 상속을 선언하고, {% block content %}와 {% endblock %}사이에 각 페이지 마다 보여질 부분들을 작성하면 된다.
📌 base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="navbar">
모든 페이지에 공통으로 들어갈 요소
</div>
{% block content %}
// base.html을 상속한 템플릿에서 구현해야 하는 영역
{% endblock %}
</body>
</html>
📌 상속받을 html
{% extends 'base.html' %}
{% block content %}
<div>
각 페이지에만 존재하는 요소들.
</div>
{% endblock %}
✔️ django 수정 기능 로직
📌 수정할 페이지 보여주기
1. ModelName.objects.get(key=key)로 수정할 모델을 불러온다.
2. 딕셔너리 형태로 인스턴스의 데이터를 한 번에 담거나 또는 objects.get으로 속성별로 변수에 담는다.
3. 보여줄 html과 함께 위에서 담은 딕셔너리 or 변수를 같이 render 해준다.
4. html에서 전달받은 딕셔너리로 내용을 띄워준다.
ex) {{article.title}}, {{article.content}} 등
def update(request, id):
article = Article.objects.get(id=id) # id 값으로 수정해야 할 해당 article을 불러옴
context = {
'article': article, #위에서 만든 article 변수를 article이라는 이름으로 딕셔너리 생성
}
return render(request, 'edit.html', context)
#수정할 페이지에 접속하면 수정할 내용이 보여져야 하기에 context를 보여질 html과 같이 render 해준다.
📌 수정한 내용 적용하기
1. 수정 페이지에서 보낸 post 요청을 인자와 같이 받아서 받은 인자로 저장된 인스턴스를 불러옴
2. html에서 받은 key의 name을 위에서 불러온 인스턴스의 속성에 덮어씌운다.
3. 위에서 변경한 속성 값을 .save()로 저장해서 db에 넣어준다.
4. redirect로 변경된 값과 함께 url을 던져준다.
def update(request, id) #수정 페이지에서 id와 함께 post 요청받음
article = Article.objects.get(id=id) # 전달받은 id로 특정 객체를 불러옴
article.title = request.POST.get("title") # id 값으로 불러온 객체의 속성을 POST 요청으로 온 값으로 다시 선언
# article.title은 기존에 저장 되어있던 title 이고 request.POST.get으로 가져온 title로 바꿔준다
article.save() # 다시 article을 변경된 내용으로 저장
return redirect( "articles:detail", article.id)
# 수정된 내용으로 다시 수정 페이지를 보여줘야 하기에 처음 요청 받았던 id 값으로 해당 객체를 다시 보여줌
✔️ 머신러닝(회귀, 분류)
- 머신러닝에서 문제를 풀 때 회귀(Regression)와 분류(Classification)로 나뉘며 경우에 따라 두 방법을 모두 사용하여 문제를 풀 수 도 있다
- 회귀는 출력값(output)이 연속적인 경우에 소수점으로 예측하여 푸는 방법이다.
- 분류는 출력값(output)이 Pass or Fail으로 연속적이지 않고 성공, 실패를 클래스로 나누어 푸는 방법이고, 다중으로 클래스를 나누어 푸는 방법은 다중 분류라고 한다.
- 회귀와 분류 모두 사용해서 문제를 푸는 방법은 경우에 따라 틀리겠지만 입력 값을 넣었을 때 연속적인 출력 값을 클래스로 나누어 푸는 방식이다.
✔️ 머신러닝 학습 방법(지도학습, 비지도학습, 강화학습)
- 지도 학습 : 정답을 알려주면서 학습시키는 방법으로 입력 값에 정답을 입력해주는 작업인 라벨링을 하면서 머신러닝을 학습시키는 방법이다.
- 비지도 학습 : 출력 값의 데이터 셋이 없을 때 머신러닝을 학습시키는 방법으로 머신러닝에 입력 값만 넣어주고 알아서 분류하도록 학습시키는 방법이다.
- 강화 학습 : 주어진 데이터 없이 수많은 경우의 수를 실행과 오류를 반복하여 학습하고, 성공할 확률이 높은 행동을 했을 때 보상을 받으며 학습하는 방법이다.
오늘 느낀 것
머신러닝 강의를 처음 들어봤는데 겁을 먹은건지 강의 내용이 이해하기 많이 어려웠다.
django를 배울 때도 마찬가지 라는 마음가짐으로 이해는 어렵지만 머신러닝을 학습시키는 것 처럼
나 자신도 강화 학습을 시켜야겠다.
내일 할 것
🚀 내일은 이것저것 To do 를 만들어 욕심부리기 보단 머신러닝 강의를 최대한 집중해서 듣고 진도를 많이 나갈 수 있도록 노력해야 할 것 같다.