슈코딩
[Django] 추천시스템 프로젝트 코드복기 1 본문
오늘 쓰는 글은 온전히 이번 프로젝트때 사용한 장고에 익숙해지기위해
프로젝트 처음부터 코드를 새로운 파일에 다시 써보며 순서를 복기한 글이다.
1. Django 프로젝트 생성 파일지정
2. django-admin startapp 앱이름 APP 생성
3. settings.py 에 APP 등록
4. 최상위 디렉토리 (manage.py가 있는 경로) 에 my_settings.py 생성후 SECRET_KEY , DATABASES 분리
my_settings.py
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
SECRET = {
'secret': '', #시크릿키
}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
settings.py 시크릿키, 데이터베이스 뺀자리에 넣는 코드
import my_settings
SECRET_KEY = my_settings.SECRET['secret']
DATABASES = my_settings.DATABASES
코드에는 sqlite 지만 프로젝트에선 MySQL을 사용함.(노출되면 안되는 정보가 있음)
.gitignore 에 my_settings.py 추가해서 깃허브에 올리지않도록 함.
5. Model 생성
user, detail, animation 각 필요한 Model 생성
genre = models.ManyToManyField(Genre, related_name='animation')
related_name을 설정해주는건 장고의 ORM기능을 활용하기 위해서이다.
MtoM 혹은 Foreign Key를 사용할때 들어가는 related_name 에대한 참고자료
6. python manage.py makemigrations, python manage.py migrate
->에러 발생
복습을 하다보니 이런문제가 생겼는데 알고보니 settings.py 에 auth.user모델을 지정을 안해줬던것이었다.
AUTH_USER_MODEL = "user.User"
지정을 해준뒤 migration을 하니 잘 실행이 되었다.
DB에 잘들어온 모습을 볼 수 있다.
7. 템플릿 생성, static폴더 생성
템플릿들은 눈으로 한번 훑고 복사해서 가져오자.
8. urls.py 작성
user, detail, animation에 각 관련된 url들이 들어가있고
detail urls.py에는 세부정보,애니메이션 하나에 해당하는 상세페이지로 접속해야 하기 때문에 <int:id> 를
url 넣어서 id값으로 고유상세 페이지를 들어갈 수 있게 해주었다.
detail/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('detail/<int:id>', views.animation_detail, name='animation-detail'),
path('comment/<int:id>', views.comment, name='comment'),
path('comment/delete/<int:id>', views.delete_comment, name='delete-comment'),
path('bookmark/<int:id>', views.bookmark, name='bookmark'),
path('recommend_toggle/<int:id>', views.recommend_toggle, name='recommend_toggle'),
path('random/', views.random_view, name='random_page'),
]
다음글에서는 가장 많은 내용이 담긴 views.py 를 파헤쳐볼 생각이다. 핵심기능들이랑 복잡한 코드가 전부 들어간 부분이라서 에러도 정말 많이 났었던 곳이고 제대로 한번더 복습하고자 하는 목적이다.
'개발일지 > Project' 카테고리의 다른 글
[Django] DRF 활용한 딥러닝 이미지처리 Project (0) | 2022.06.29 |
---|---|
[Django] 추천시스템 프로젝트 코드복기 2 (0) | 2022.06.17 |
[Django] 추천시스템 프로젝트 (0) | 2022.06.07 |
[머신러닝] 모델설계 (0) | 2022.05.24 |
[머신러닝] 프로젝트 5/18 (0) | 2022.05.21 |