유튜브 클론 프로젝트
- 장고 프레임워크에서 유튜브 기능을 구현하여 장고를 학습
신찬수 |
---|
- 운영체제
- Windows 10
- 에디터
- VS Code
- 프레임워크
- Django
Django==5.0.2
pillow==10.2.0
기능 | URL |
---|---|
메인페이지 | /tube |
회원가입 | /accounts/signup |
로그인 | /accounts/login/ |
로그아웃 | /accounts/logout |
프로필 조회 | /accounts/profile |
게시물 조회 | /tube/int:pk |
글 쓰기 | /tube/create |
게시물 업데이트 | /tube/int:pk/update |
게시물 삭제 | /tube/int:pk/delete |
태그 별 조회 | /tube/tag/str:tag |
댓글 삭제 | /tube/int:pk/comment_delete |
구독 | /tube/int:post_id/int:user_id/subscribe |
구독 취소 | /tube/int:post_id/int:user_id/unsubscribe |
- (옵션) 기존 내용을 지우고 사용하고자 한다면
- db.sqlite3 파일 삭제
- .\media 하위 폴더 blog 삭제
- 가상환경 생성 및 활성화
> python -m venv venv
> .\venv\Scripts\activate # 리눅스 환경이라면, source venv/bin/activate
- 필수 라이브러리 설치
> pip install -r requirements.txt
- DB 마이그레이션
> python manage.py migrate
- admin 계정 새로 생성 (기존 admin 계정: admin, 비밀번호: Admin12#$)
> python manage.py createsuperuser
- 장고 서버 실행
> python manage.py runserver
- 접속
http://127.0.0.1:8000/tube/
- admin 이외 가입자의 게시물 생성 불가 이슈
- 문제 : 글쓰기 페이지에서 모든 항목 작성해서 제출해도 업로드가 초기화되면서 글쓰기 페이지에 남게 됨
- 원인 파악 : 디버깅 결과, form이 유효하지 않아서 계속 글쓰기 페이지에 남게 됨.
- 해결 : ./tube/views.py 내 form을 정의하는 코드 부분에 FILE에 대한 내용이 누락. 이를 다음과 같이 수정함.
# ./tube/views.py line 61 ''' 기존 : form = PostForm(request.POST) -> 수정 : form = PostForm(request.POST, request.FILES) '''
- 도움을 받은 참고 링크 : https://simpleisbetterthancomplex.com/tutorial/2016/08/01/how-to-upload-files-with-django.html
- 화이트리스트 : ./config/settings.py => ALLOWED_HOSTS 옵션에서 특정 IP 또는 특정 IP 대역을 지정할 수 있다.
- 서드파티 DB 연동 : ./config/settings.py => DATABASES 옵션에서 MySQL, PostgresSQL 등의 DB를 연동할 수 있다. (기본 DB: sqlite3)
- 배포 전환 시 오류 페이지 : ./config/settings.py => DEBUG = False => 페이지가 없거나 에러 발생시 디버그 화면이 나오지 않게 되며, 대신 대체 페이지를 설정하면 된다.
- 배포 목적이면, 안정성과 성능의 이유로 Nginx와 gunicorn을 사용하는 것을 권장한다.