AttributeError at /admin/r/31/4/ 'NoneType' object has no attribute 'startswith'

조회수 281회

안녕하세요 장고로 뭘 만들다가 막혔는데 에러메시지가 왜 나왔는지 이해가 안돼서 ㅜㅜ 혹시 아는분 있나 하고 여쭤봅니다 구글링도 하고 해봤는데 정말 모르겠더라구요,,

상황을 요약하면 models.py: 게시글 형식의 lecture와 그것에 대응하는 category를 만듬. category와 model 모두 get_absolute_url을 만들어줬고, category는 잘 로드됨. 그런데 model은 표시는 되는데 html에 넣었을때 화면에서 클릭자체가 안됨. views.py: class LectureDetail(DetailView): model = Lecture def lecture_detail(request, id): lecture = get_object_or_404(Lecture, id=id) return render(request, 'instructor/lecture_detail.html', {'lecture':lecture})

이런식으로 거의 동일한 뷰와 모델을 가진 앱을 2개 만들었는데, 그냥 화면에서는 둘다 클릭이 안되고({{ l.get_absolute_url}} 이케 걸어놨음) 어드민 통해서 상세페이지 보면 한쪽만 저 에러가 뜹니다.

이게 모델명이 중복돼서 그런건지.. 그런데 그러기에는 category모델은 다른 앱들에 하나씩 넣어도 문제없었거든요??

질문이 중구난방이라 죄송합니다. ㅡㅡ;;

1 답변

  • 'NoneType' object has no attribute 'startswith'

    startwith라는 속성을 꺼내야하는 명령에서 None을 갖다 넣었다는 겁니다. 이 문구 하나로 모든 문제가 보이는데, 어떤 것을 모르겠다는 것인지 모르겠습니다.

    구현된 페이지가 클릭이 안된다는 것은 해당 요소를 a 태그로 감싸지 않은 것이 원인으로 보입니다.

    • 안녕하세요 답변 감사합니다. 일단 a 태그는 원래 걸려 있었습니다.. 이게 테이블 요소라 a 태그 바로 밖에 td 태그가 걸려 있는데 html 문제라면 그게 문제일지?? 모르겠네요 저는 어드민 뷰로 볼때는 get_absolute_url 함수관련 문제인가 했는데.. 그리고 구글링해서 nonetype object~에러메시지 자체의 뜻은 알겠는데 의미를 이해 못해서요.. startswith 이라는 함수를 쓴적도 없거니와 말씀하신것처럼 추측해서 None을 사용한 관련 코드에서 None을 제거하는 방향으로 가도 에러메시지가 똑같이 나와요. 그리고 에러메시지가 가리키는 startswith의 경로를 보면 제가쓴 코드가 아니라 장고 설정폴더 안인데 그건 제가 사용한 함수중에 startswith 속성이 사용되는 함수 관련이거나 모델구조 자체에 충돌/중복이 있는게 아닐까 추측합니다.. 너무 두서없이 써서 죄송합니다 제가 배우면서 만드는 과정이라 장고를 깊게 이해하진 못해서요 ㅜㅜ 혹시 에러메시지 관련해서 뭔가 짐작이 가시면 알려주시면 감사하겠습니다.. 찾아보지도 않고 무작정 물어본건 아니에요 ㅜㅜ dd 2023.1.26 21:18
    • startswith이란건 특정 문자열로 시작하거나 끝나는지 체크하는 함수라는데 저는 일단 startswith이나 그 비슷한 기능을 직접 쓴적은 없구요 혹시 카테고리 분류에서 slug 입력값으로 받을때 get_object_or_404 나 ~.objects.filter 함수에 startswith이 내재되어 있는거 아닌가 짐작만 합니다.. 상황이 어떻게 돌아가는지 짐작가시면 댓글 부탁드립니다 ㅜㅜ dd 2023.1.26 21:35
    • 코드 한 줄도 제대로 안 올려놓고 이게 문제일까요? 이러면 답이 나옵니까? str 객체 박아줘야 하는 startswith 명령에다가 None 값 박아놓으면 그게 제대로 작동할까요? 하다못해 에러 메세지라도 전문을 올려놓던가 해야 뭔 코드가 문제인지 유추라도 하지, 코드도 전혀 상관없는 코드 하나 올려놓고 뭐 연관되는거 하나 없이 모르겠어요 ㅜㅜ 이러면 제가 궁예마냥 관심법이라도 발동해서 알아내야 하나요?? 관련 코드와 에러메세지 전부 다 까던가, 아니면 그냥 혼자 알아서 하십쇼. 초보자 2023.1.28 10:53
    • 아니 위에서는 모든 문제가 보이는데, 어떤 것을 모르겠다는 것인지 모르겠다면서요? 근데 지금은 뭔 코드가 문제인지 유추가 안된다니 어이가없네요 처음부터 코드를 다 올려봐야 알겠다고 좋게 말하던가.. 전 님이 다 알겠다길래 코딩 씹고수인줄알고 상황설명만 개략적으로 했죠 위에 댓글 안읽고 끝에 모르겠어요 ㅜㅜ 만 본건 님아닌가요? ㅋ startswith 직접적으로 안썼고 장고 설정폴더 내에서 오류났다고 말했잔아요~ None 값 박은적 없다고요 ㅋㅋ dd 2023.1.28 12:52
    • 여기는 말싸움하는 창구가 아닙니다. 질문자체가 객관적으로 봤을 때 이해가 되지 않아서 제대로 된 답변을 해드릴 수 없는 부분이 분명합니다. 질문자분께서 한번 잘 정리하셔서 질문을 따로 올리는 편이 답변 받기에 편하실 거같네요. 다시한번 말씀드리지만 여기는 질문과 답변을 받는 창구입니다. 질문을 명확하게 적어주세요^^ 어드미니 2023.1.30 11:27
    • 이러이러한 에러가 나왔는데 어떤부분이 문제일까요? 라던가, 버튼을 만들어도 버튼 클릭이 안되는데 어디서 문제가 생겼는지 모르겠으니 코드를 한번 봐주실수 있을까요? 라던가요. 명확한 답변을 드릴 수 있는 질문이 좋습니다. 어드미니 2023.1.30 11:29

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)