2023.04.12(Django)

Vinyl Stage·2023년 4월 12일
0

개발일지

목록 보기
30/42
post-thumbnail

중요한 것이다

현재 배우고있는 강의에서 변수이름을 너무 지나치게 통일시키는바람에 뭐가 뭔지 어디서 가져오는지 알수가 없다

어제 이것때문에 굉장히 많은 시간을 버려가며 경로를 찾아다녔는데(함수면 클릭하면 되는데 스트링형태라 경로찾기도 빡셈)

그래서 팀원분이 잘 정리해주셨다

  1. render()구문에서 {}(중괄호) 안에 들어가는 'my_commit'와 html에서 템플릿 구문으로 쓰이는 'my_commit'models.py 에있는 db_table 이름이 맞는지?
# 예시
# views.py
def detail(request):
    if request.method == 'GET':
        all_commit = Commit.objects.all().order_by('-created_at')
        return render(request, 'main.html', {'my_commit':all_commit})

# models.py
class Commit(models.Model):
    class Meta:
        db_table = "my_commit"

# main.html
{% for tw in my_commit %} 
    <div class="col-md-12 mb-2">
    <!-- 중간 생략 -->
    </div>
{% endfor %}

답 : db_table이름이 아니다.
딕셔너리로 맞추기 위해 쓴것 뿐 두 이름만 통일시킨다면 크게 상관이 없다.


  1. commit_comment = Comment.objects.filter(commit_id=id).order_by('-created_at') 에서 commit_id는 데이터베이스 에 있는 걸 가져오는거같은데 commit_id가 아닌 commit 으로만 해도 작동이 잘되는데 그 이유가 무엇인지?
# views.py
def detail_commit(request, id):
    my_commit = Commit.objects.get(id=id)
    commit_comment = Comment.objects.filter(commit_id=id).order_by('-created_at')

답: commit_id는 db에 담긴 내용을 가져오는것이 맞다
commit으로만 해도 작동되는 이유는 예외처리에서 걸리지 않고 운좋게 넘어간 케이스이다. 쿼리셋과 인자를 확실히 구분못하면 무적권 에러가 발생한다

#예시
def detail_commit(request, id):
    my_commit = Commit.objects.get(id=id)
    commit_comment = Comment.objects.filter(commit_id=id).order_by('-created_at')

함수 안에 있는 인자인 id'id=id''commit_id=id'에서 두번째에 해당하고 첫번째 idcommit_id처럼 db에 있는 쿼리셋을 가져오는 것이다.

출처 : https://hanilcome.tistory.com/

profile
Life is Art

0개의 댓글