inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편

채팅방 단위로 그룹 채팅

그리고 여기서 막혔어요...

해결된 질문

288

박찬진

작성한 질문수 9

0

 이 수업에서 하라는 대로 다 하고 :8000/chat/ 들어가려니까

이런 오류가 뜨면서 막혔습니다 ㅠㅠ

4번이나 훑어봤는데 어디서 틀린건지 모르겠습니다 ㅠㅠㅠ

코드는 진짜 4번이 아니라 8번은 봤습니다 처음부터 끝까지. 틀린 곳은 없습니다...

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

index.html에서 'test'를 숫자로 바꿔주니까 됐습니다

왜 강의에서는 'test'여도 잘 되고 저는 안된건가요?

제가 'test'를 12로 바꾸고 했는데

:8000/chat/은 잘 들어가지지만

테스트 채팅방 들어가기를 누르면 다시 에러가 뜹니다... 그러니까 chat/test/chat이라는 채팅방이 없고

chat/12/chat이라는 채팅방만 존재하니까 그런거 같아요 어떻게 해야하죠?

django-channels python django

답변 1

1

이진석

안녕하세요.

urls.py에서 제가 추가설명으로 chat/<int:pk>/chat/ 으로 변경하는 것이 더 적합하다고 말씀드렸었는 데요. 이는 chat/숫자/chat/ URL일 경우에만 room_chat 뷰가 호출되는 것이며, 숫자가 아닐 경우에는 URL 패턴에 맞지 않게 됩니다. 그러니 chat/test/chat/ 접근 시에는 NoReverseMatch가 발생하는 것이구요.

그런데, 제 강의 녹화시에는 chat/<str:pk>/chat/ 으로 진행을 했었으니, str패턴으로 정의했으니 chat/test/chat/ 패턴이 매칭이 되었던 것입니다.

urls.pyrouting.py 에서 <int:pk> 패턴을 <str:pk> 패턴으로 수정해서 진행해주시겠어요?

강의 진행에 혼란을 드려 죄송합니다.

화이팅입니다.

0

박찬진

urls.py와 routing.py에서 <str:room_pk>로 다 바꾸었고

models.py에서도 return "chat-%d" % (room_pk or room.pk)에서

return "chat-%s" % (room_pk or room.pk) 로 바꾸었습니다.

그래도 동일하게 :8000/chat/이 접속이 안됩니다.

imageimage

0

이진석

템플릿에서 test 가 아니라 “test”로 문자열을 넘겨주셔야 합니다.

test로 넘겨주시면 context data에서 찾는 데, test 이름의 데이터가 없으니 빈 문자열로서 url reverse가 수행된 것입니다. 빈 문자열에 매칭되는 패턴은 없으니 url reverse error가 발생한 것입니다.

0

박찬진

채팅방 구현 강의를 처음부터 다시 차근차근 정확하게 따라해보았습니다.

그 결과, 강의에서 처럼 :8000/chat/에 들어가서 '채팅방 만들기'를 먼저 누른 후, '장고'라는 이름을 지은 후 채팅하는 것은 됩니다.

하지만, :8000/chat/에 들어가서 바로 '일단 테스트 채팅방 진입'을 누른다면 다음과 같은 오류가 뜹니다.

 

일단은 계속 진행해보겠습니다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

아 바로 다음 강의에서 test부분을 지우고 룸 리스트를 불러오는군요! 해결됐습니다!

0

이진석

옙. 인자로 받은 room_pk를 Room 조회에 사용하니, id필드는 숫자이므로 문자열을 받으니 해당 ValueError 오류가 발생한 것입니다.

{% url "room_chat" "test" %} 는 이제 room_pk 조건에 맞지 않는 URL Reverse 식이니, 삭제되어야 하는 것이죠.

화이팅입니다~!! :-)

유저목록 확인 문제 질문드립니다.

0

168

2

안녕하세요 선생님,

0

96

1

하나의 채팅방만 만들어보려고 하는데 잘 안되고 있습니다.

0

108

1

도커와 연동 관련 질문드립니다.

0

208

3

채팅방 참여자 목록 - 채팅방 입장/퇴장 실시간 이벤트 처리

0

171

2

안녕하세요, onopen() 문제로 질문드립니다.

0

141

2

Consumer Instances 관련 질문 있습니다.

0

74

2

안녕하세요, 요청은 채널스에서 먼저 받고, http 요청은 장고를 통해서 처리한다고 하셨는데요.

0

80

2

기능 구현 질문 드립니다.

0

117

1

git에 있는 코드를 다운 받아 실행 해봤는데 에러가 났습니다.

0

160

2

ValueError: No route found for path 'ws/liveblog/'.

0

137

2

지정 경로에 템플릿 파일 만드는 단축키가 뭔가요?

0

125

2

채팅 내역을 영구적으로 저장하고 싶습니다.

0

92

1

질문이 있습니다.

0

165

1

구독 채팅 구현

0

215

1

헷갈려서 질문드립니다.

0

360

2

@login_required 장식자를 적용한후에는 로그인을 성공하면 채팅방으로 어떻게 이동을 하는 건가요?

1

277

1

docker run -d --restart always --name redis7 --publish 6379:6379 redis:7

0

265

1

websocket 자바스크립트 클라이언트 구현?

0

364

1

메세지 리액션 : 좋아요. 질문 드립니다.

0

361

1

{유저명}님이 메세지 입력 중입니다. 메세지 질문드립니다.

0

617

1

채팅 로비에서 유저수 노출을 위하여

0

329

1

채팅방에서 마지막 유저가 나가면 채팅방 자동 삭제 질문드립니다.

0

436

1

동기방식의 consumer 클래스와 비동기방식의 consumer클래스의 차이가 뭔지 궁금합니다.

0

429

1