본문 바로가기
내일배움캠프

25. 내일배움캠프 - 18일차 TIL

by 새싹_v 2022. 9. 26.
728x90


 

 

TIL

📌
오늘 한 일
쪽지시험(장고1주차)
장고 4주차 강의 듣기
팀원과 pullrequest 해보기
팀원과 팀 프로젝트 계획!
거북이 반 장고 수업!

오늘은 아침부터 쪽지시험을 봤다.

쪽지시험 내용은 1주차 장고 강의에서 문제가 나왔다.

시험에 내용은 vscode로 자기소개 페이지를 만들고 깃에 올리는 거였다.

난 페이지 만드는 것까지는 완료했는데 깃으로 올리는 부분에서

계속 오류가 생겼다. 오류는 remote에러가 계속 발생하는 것이였다.

.git파일을 지우고 다시 해보고 repository도 지우고 다시 해봐도 계속 안됐다.

계속 지우고 시도해보다가 깃허브 주소를 HTTPS로 하고 다시 해봤다.

그랬더니 정상작동.... 내가 계속 SSH로 해서 오류가 났던 것이다.

전에 깃작업을 할 때 ssh를 사용해왔었는데 갑자기 안되니깐 짜증이 팍왔다.

HTTPS로 주소로하고 제출을 했다. SSH설정은 다음에 해야겠다. ㅋㅋㅋ

 

쪽지시험을 보고 오류 수정을 하니깐 거의 11시가 됐다. 너무 시간을 많이 잡아먹었음.

그래도 남은 한 시간 동안 장고4주차 강의를 들었다. 

4주차는 팔로우 팔로잉 가능을 했다. 3주차보단 쉬운듯하다. 점심 먹고 오후에도 장고 강의를 듣고

팀원분들과 프로젝트에 대해서 토의를 했다. 아무래도 미리 준비해야지 나중에 촉박하지 않을 것 같아서다.

토의내용은 이번 프로젝트부터 깃을 사용해야 하는데 미리 연습을 하자는 내용과 인스타 보면서 

페이지에 기능 생각해오기였다. 난 4주차까지 강의를 다 듣고 시간이 남아서 팀장님과 기능에 대해서 

엑셀 시트에 같이 정리를 했다.

정리하고 팀장님과 pullrequest 연습하고 merge까지 해보는 것까지 했다.

 

프로젝트 계획도 하고 강의도 듣다 보니 벌써 저녁 먹을 시간이 돼서 저녁 먹고 거북이 반 수업을 들었다.

확실히 거북이반 수업이 스파르타 강의보다 이해하기 쉬웠다. 스파르타 강의는 따라가기 바쁘고 강의 보면서는

이해를 하는데 막상 혼자 하면 어렵다 ㅋㅋㅋㅋ

지금은 거북이 반 수업 듣고 til작성 중 

오늘 뭔가 한 게 없다고 느꼈는데 til쓰다보니 생각보다 한게 많다. 그래서 글도 길다 ㅋㅋㅋㅋ

아마 til 쓰고 장고 5주차 강의 듣지 않을까 싶다.

빨리 장고를 잘 다루고 싶다.

 

 

 

remind

장고 4주차

one-to-many
하나의 사용자가 여러 개의 글을 쓸 수 있다.

one-to-one
하나의 사용자가 프로필 클래스 하나만 사용

many-to-many
A모델과 B모델이 있을 때 A가 여러 개의 B를 가질 수도 있고
B가 여러 개의 A를 가질 수 도 있을 때 사용하는 모델
ex) 피자와 토핑
피자는 여러 개의 토핑을 가질 수 있다.
토핑은 여러 개의 피자에 올라갈 수 있다.


만든 모델을 어드민 화면에 적용하기
admin.py > from.models import '모델명'#임포트해주기 > admin.site.register('모델명')#어드민 화면에 적용


===========================
어드민 페이지에서 My topping에 있는 Add 버튼을 눌러 데이터를 추가해줄 때
저장 오류가 날 경우❗❗
장고가 createsuperuser를 잘 인식하지 못해서 그런 것이다!
그러면 데이터베이스를 한번 초기화해 줘야 한다.

1. 왼쪽 프로젝트 목록에서 db.sqlite3 파일을 지워준다.

2. 각 앱의 migrations를 지워 주어야 한다, 여기서 주의해야 한다.(난 실수로 폴더를 삭제해버렸다. 폴더 삭제하지 않게 조심) 각 앱에서 migrations 폴더가 있고, 그 안에 '__init__.py' 와 함께 다른 파이썬 파일들이 있다.
__init__.py를 제외한 파일을 지워주면 된다.
(restauran앱, tweet앱, user앱 모두 지워주기)

3. 이제 터미널을 열어서 아래와 같이 입력해주기
python manage.py makemigrations
python manage.py migrate
데이터베이스를 삭제하고 다시 데이터베이스를 만들라는 명령어를 내려줌

4. 적용이 된 것을 확인했다면, 다시 admin 계정을 생성해주기
python manage.py createsuperuser
===========================

바로 위에 방법처럼 하고 My pizzas와 My toppings를 Add로 추가할 수 있다.
My pizzas와 My toppings는 many to many 모델을 어드민 계정에 올려보는 행위이다.


======shell=======
django의 기능들을 코딩 없이 사용할 수 있게 해주는 기능
python manage.py shell

#피자 모델에서 토핑 불러오기
>>>from restaurant.models import MyTopping, MyPizza
레스토랑스 앱 안에 있는 models를 가져온다. 그 안에 있던 MyTopping, MyPizza를 넣어주겠다.

- 전체 피자
>>>MyPizza.objects.all()
<QuerySet [<MyPizza: 도미노>, <MyPizza: 피자헛>, <MyPizza: 파파존스>]>

- 피자 하나씩 불러오기
>>>MyPizza.objects.get(pizza_name='도미노')
<MuPizza: 도미노>
하나씩 불러오기

- 각 피자의 토핑들 불러오기
>>>MyPizza.objects.get(pizza_name='도미노').pizza_topping.all()
<QuerySet [<MyTopping: 치즈>, <MyTopping: 치킨>]>

#토핑 모델에서 토핑을 가지고 있는 피자 가져오기
>>>from restaurant.models import MyTopping, MyPizza

- 전체 토핑
>>>MyTopping.objects.all()
<QuerySet [<MyTopping: 치즈>, <MyTopping: 페퍼로니>, <MyTopping: 치킨>, <MyTopping: 올리브>, <MyTopping: 피망>]>

- 각 토핑 별로 출력
>>>MyTopping.objects.get(topping_name='치즈')
<MyTopping: 치즈>

- 각 토핑이 들어 있는 피자를 불러오기
>>>MyTopping.objects.get(topping_name='치즈').mypizza_set.all()
<QuerySet [<MyPizza: 도미노>, <MyPizza: 피자헛>, <MyPizza: 파파존스>]>
==========shell끝==============


팔로우 기능 만들기
user/models.py
from django.conf import settings #장고가 관리하는 세팅이 있는 곳에서 불러오는 것
follow = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='followee')
#follow 필드 안에 들어가는 정보들은 사용자 정보

exclude #해당하는 데이터에서 어떤 거를 빼겠다.
#사용자를 불러오기, exclude와 request.user.username 을 사용해서 '로그인 한 사용자'를 제외하기
user_list = UserModel.objects.all().exclude(username=request.user.username)


========거북이 반==========

<form>요소는 텍스트 필드, 체크박스, 라디오 버튼, 제출 버튼 등과 같은
다양한 유형의 입력 요소를 위한 컨테이너
한 페이지에서 다른 페이지로 데이터를 전달할 때 사용
form에는 action과 메소드가 있다.
메소드를 통해서 GET인지 POST인지 결정해줄 수 있고
action을 통해서 어느 페이지로 이동할 것인지 결정해준다.


<input type="text" id="content" name="content" /> #name을 사용해서 받는 곳에서 식별할 수 있도록 해줌


content = request.POST.get('content') #리퀘스트로 받은 것 중 POST메소드일때 content이름으로 된 것을 받아오겠다.


template 상속
{% extends 'base.html' %} {% block content % } '여기사이에 원하는 html 넣기' {% endblock %}
728x90

댓글