본문 바로가기
AI 웹개발반

[TIL] 오늘 공부 정리, 팀프 코드 수정

by 째깍단 2023. 4. 13.

오늘 한 것

 

[O] : 팀프 

    ㄴ 회의 및 추가 구현사항 논의하기 : 각자 하고자하는 것들 계속하기

    ㄴ 댓글 기능 디버깅

    ㄴ 팀프에 적용하기

 

[△] : Django 튜토리얼 6까지 진행하고싶다^^; => 튜토5까지 진행, 갈 수록 어렵다

 

[O] : 후발대 7시 강의

 

[O] : 어제자 튜토리얼 복습

 

 

 

 

복습한 것

 

- re모듈 / pagination / <form>

 

- redirect render 차이

 

redirect : url을 넣어 전송해줌 

render : html 을 넣어 반환

 

- DB 키 종류

FK : Foreign Key 다른 테이블을 참조할 때 사용도니다.

UK : Unique Key 중복값을 허용하지 않는다

        Ex. 회원정보 라고하면 username, nickname, email 같은 것

PK : Primary Key 테이블에서 반드시 개의 PK 존재해야 한다.

 

 

 

- blank : 비어있는 스트링(””) 허용 여부를 지정한다.

- null : null(=None) 허용 여부를 지정한다.

 

 

 

 

새롭게 알게 된 것

 

  • OneToOneField : = ForeignKey(unique=True)  둘은 같은 개념으로 볼 수 있다

 

  • ManyToManyField := 참조를 연결하면 서로를 참조하는 db테이블이 생성된다

이렇게 user_user_hobby 테이블이 생김

 

 

  • 게시글에서 작성자 이름을 찾는것 : 정참조
    작성자의 게시글을 보는 것 : 역참조(나를 참조하고 있는 게시글 row를 가져와라)

  • related_name  : 역참조 키워드를 등록하는 옵션
       -  Foreignkey 기준 역참조
           related_name이 지정되지 않았을때는 인스턴스에 _set을 붙여준다.user.article_set.all
       -  OneToOnekey 기준 역참조
           User.userdata.주민번호  > 이런식으로 그냥 적어서 참조한다.



  • 버그 식별하기

    test를 원하는 코드를 TestCase를 상속받는 class로 작성하고, test를 실행한다.
    어떤 테스트와 어떤 행에서 실패가 발생하고있는지 알려준다.-> 버그가 발생한 메소드를 오류가 생기지 않도록 수정한다.

    대신 배열, 관리를 잘 하기
    - 테스트하려는 각 조건 집합에 대해 분리된 테스트 방법
    https://docs.djangoproject.com/ko/4.2/topics/testing/
    - 기능를 설명하는 테스트 메소드 이름
    - 각 모델이나 뷰에 대한 별도의 TestClass

    테스트를 반복 / 중복하는 것은 문제가 되지 않는다!
    테스트주도 개발.. 테스트를 작성하고 코드를 수정하기  = 코드오류해결 및 안전하게 고정!
# test.py
python manage.py test polls
from django.test import TestCase

 

  • 그래서 결국 디버깅은 2가지 방법으로 진행이 가능함

    1) shell을 사용해 버그식별하기
    2) test.py에서 버그를 노출하는 테스트코드 만들기

 

 

  • form의 상위호환 serializers
  • Validation
  • create
  • Update
  • Read
  • CRU랑 유효성 검사를 해줌 
  • delete 안해줌

 

 

Today's Error

  • 코드 디버깅하기
더보기

'CommentForm' object has no attribute 'urls'

 

시도1.

메인urls에 app url 포함시키기

path("", include("comments.urls")),

 

시도2.

admin.py에서 register를 한 묶음에 하지 말고, 각각 해주도록한다.

admin.site.register(CommentModel)
admin.site.register(CommentAdmin)

 

두가지를 모두 적용한  해결되었음!

 

 

또다른 오류

'ModelFormMetaclass' object is not iterable

 

기껏 만든 form을 이상한데다 갖다붙이지 않도록 하자...ㅠㅠ

 

 

 

이전 학습내용을 바탕으로 내일 할 것

 

  • 팀프에 페이지네이션 적용하기
  • 내일은 장고 튜토 7까지 꼭.. 꼭..할 수 있으면 좋겠다ㅋㅋ
  • 힘내..

 

 

 

게으름 그만!