악! Django 실시간채팅 앱 만들기 (2)

Dev_Gony·2024년 3월 11일
0

Django

목록 보기
3/4

자자 마저 해보자고오

일단 파이참으로 프로젝트 폴더 생성 후,
python -m venv venv 로 가상환경 먼저 넣어주고
그리고 python -m pip install "django~=4.1.0" 통해서 django 4.1.0 버전 설치
startapp 생성 mysite로 생성해줬음

설마 Django 제일 기본적인 프로젝트 시작할줄 모르는 사람은 없겠지...

이건 마치 음.. 음... 무튼 젤 처음 쉬운거임

그래도 순서를 대략 적어보자면

작업폴더로 가서

python -m pip install "django~=4.1.0" 장고 4.1.0 버전 설치

python -m django startproject mysite . 장고 프로젝트 생성

python manage.py migrate 장고 기본 앱 상의 마이그레이션, DB스키마 생성

python manage.py runserver 장고 개발서버 구동

이렇게 하면

요렇게 서버가 실행됨


그 다음으로는

python -m pip install "channels[daphne]~=4.0.0" - channels daphne 라이브러리 설치


mysite/settings.py 에다가
"channels",
"daphne",
추가 가장 위쪽에 넣어주자 ( 왜 why? 다른 앱에비해 우선순위를 갖기 위함)

ASGI_APPLICATION = "mysite.asgi.application"

까지 작성해주고


mysite/asgi.py 에 가서

import os
from channels.routing import ProtocolTypeRouter
from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTING_MODULE', 'mysite.setting')

django_asgi_app = get_asgi_application()

application = ProtocolTypeRouter({
	"http": django_asgi_app,
})

이렇게 하고 runserver를 작동하면!!

오류가 뜸

뭐... 너 ASGI_APPLICATION 설정안했다. 서버돌리는데 필요하다 라는 말인거 같음

... 아니 강의에 이런내용이 없는데 쮸밤.....

그래서 바로 google의 고수님들을 찾아나섰음

어떤 사람이 같은오류가 났는데 Redis 사용하려하는데 같은 오류가 났지만, 같은 오류니까
해결법도 같겠거니 하고 답변을 살펴봤음

WebSocket 서버에 대해 라우팅 구성을 작성해야한다고 함!
신기하게 여기도 폴더이름이 똑같음 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 개웃김
그래서 답변대로 routing.py 생성하고 settings.py 파일 수정하니까!

뭐야.. 왜 되는데.. 나도 몰라...ㅠㅠ 뭐 일단 라우팅 구성 하니 해결됐다!로...?
자세히 보면 ASGI/Daphne 버전으로 구동이되었다고 나옴!
참고할 내용은


- (중요) 이는 개발서버일 뿐, 실제 운영에서는 daphne 나 gunicorn 등을 통해 장고 애플리케이션 구동

- 여기에서 사용되는 runserver 명령은 장고 기본의 runserver 명령이 아님

- daphne 장고앱에서 오버라이딩한 runserver 명령


이부분을 짚고 넘어가야함

이렇게 까지하면 기본적인 channels 세팅 완료!! 와 사실 진짜 두드린건 5분~10분내지인데, 2시간 한거같음 호로로롤로롤 .... 무튼 마저 가보겠음 심심하니까 파이썬 버전한번 체크해보자

python --version

음.. 버전체크완료


프로젝트 폴더아래 mysite/requirements.txt 파일을 만들고

# coding: utf-8

# 장고 프레임워크
django~=4.1.0

# 채널스 기본 라이브러리 + daphne
channels[daphne]~=4.0.0

# 채널스, 채널 레이어 Redis 백엔드 라이브러리
channels_redis~=4.0.0

# 레디스 라이브러리 (4.4.0은 2022년 12월 기준 최신이지만, 종종 Redis ZREMRANGEBYSCORE 명령에 대한 응답이 None으로 처리되어 TypeError가 발생하는 버그가 있어서 skip)
redis!=4.4.0

# 환경변수의 손쉬운 settings 적용
django-environ

# 장고 내에서 손쉬운 bootstrap5 사용

# 가벼운 HTTP 클라이언트 라이브러리
requests

# HTML 파싱 라이브러리
beautifulsoup4

# 테스트
pytest
pytest-django
pytest-testdox
pytest-asyncio

필요한 라이브러리를 작성하고 한번에 다운로드하겠음
후에 다른 프로젝트를 할때에도 이렇게 requirements.txt 파일을 만들어서 한번에 모아두면 댕꿀임!

pip install -r requirements 명령을 통해서 한번에 설치 고우!

일단은 여기까지!!!!!!!!!!!!! 안뇽!

profile
잔디심는 코린이

0개의 댓글

관련 채용 정보