본문 바로가기
DEV/Web 개발

Web 개발 :: Django 개발 중 소소하게 알게된 점 _ User_TIL#39

by 올커 2022. 10. 28.

■ JITHub 개발일지 39일차

□  TIL(Today I Learned) ::

Django 개발 중 소소하게 알게된 점

 - 아래 코드의 4번째 줄을 보면 트레일링 슬래시가 없다. 잘 눈에 띄지 않지만 입력과정에서 실수로 인해 누락이 될 수 있는데, 이럴 경우 해당 경로를 request하면 404 에러가 발생할 수 있다. 404에러가 발생했을 때 정말 페이지가 없는지, 페이지로 연결은 정상적으로 되고 있는지 등 원인들이 많은데 정확한 원인분석을 위한 케이스들을 많이 익힐 필요가 있겠다는 생각이 들었다.

urlpatterns = [
    path('', views.ArticleView.as_view(), name='article_view'),
    path('<int:article_id>/', views.ArticleDetailView.as_view(), name='article_detail_view'),
    path('<int:article_id>/comment', views.CommentView.as_view(), name='comment_view'),
    path('<int:article_id>/comment/<int:comment_id>/', views.CommentDetailView.as_view(), name='comment_detail_view'),
    path('<int:article_id>/like/', views.LikeView.as_view(), name='like_view'),
]

 - 역참조에 대한 개념이 아직 익숙치 않다. 역참조 자체는 자체 테이블에는 Foreign Key(이하 FK)가 없지만 다른 테이블의 FK로 지정된 테이블일 경우, 참조하는 그 다른 테이블로 접근하도록 하는 것을 말한다. FK를 사용할 때, 또는 ManyToMany로 연결될 때 모델과의 관계에 대한 정리가 필요하다. 일단 오늘 알게 된 것은 FK를 사용하여도 related_name을 주지 않으면 '테이블명(소문자)_set'과 자동으로 연결된다는 점 이다. 하지만 여러 테이블과 FK관계로 엮였을 경우 중복이 되기 때문에 related_name을 만들어주는 것이 좋다. related_name을 설정하는 방법은 링크에 잘 설명이 되어있는 듯 하다.(*참고 링크) 정리하면 related_name은 장고 ORM모델을 위한 것으로, ORM모델은 쿼리문 없이 장고에서 데이터베이스와 소통하기 위한 것이다.

반응형

댓글