Django 사용법 (장고걸스 튜토리얼)

예니·2021년 1월 1일
1

Django 로 프로젝트를 시작했다.
처음 접하는 거라 분명 프로젝트 생성하고 다룰 때마다 헤맬 것이 분명하므로 정리해둔다.
장고걸스 보면서 정리
장고걸스에서 메인은 mysite, 앱은 blog

1. 적당한 곳에 프로젝트 폴더 생성


2. 가상환경 생성

생성한 프로젝트 폴더로 이동해서 python -m venv yenyvenv
(yenyvenv부분은 생성할 가상환경 이름)


3. 가상환경 실행

source yenyvenv/bin/activate 명령어로 가상환경을 실행한다.
프롬프트 앞에 (yenyvenv) 와 같이 본인이 생성한 가상환경의 이름이 뜬다면 성공
(종료는 deactivate)


4. 장고 설치

  1. python -m pip install --upgrade pip : 장고 설치에 필요한 pip이 최신 버전인지 확인
  2. pip install django~=2.0.0 : 장고 설치

5. 데이터베이스 생성

python manage.py migrate


6. 웹 서버 시작

python manage.py runserver
종료하려면 control + c


7. 어플리케이션 만들기

정돈된 환경에서 모델을 만들기위해 어플리케이션을 만든다.

프로젝트 내부에 별도의 어플리케이션 만들기
프로젝트 폴더, 가상환경 실행된 상태에서
python manage.py startapp xxxx
(xxxx는 생성할 어플리케이션 이름)

그러면 xxxx라는 디렉토리가 생기고 그 아래에
migrations, __init__.py, admin.py, models.py, tests.py, views.py 생성된다.


8. 어플리케이션 사용하기

어플리케이션 생성하고 사용하려면 장고에 알려줘야 한다.
settings.py 파일 안에서 ISTALLED_APPS에 어플리케이션 이름을 추가해준다.


9. 모델 만들기

기본 세팅이 끝났으면 이제 모델을 만들어보자. 장고에서의 모델은 객체다.
객체가 어떻게 구성되야하는지 생각하고 모델을 만들자.

어플리케이션 폴더 하위의 models.py 에 모델을 만든다.
class 모델이름(models.Model) 으로 만드는데 이때 모델 이름의 첫 글자는 대문자여야 한다. models는 장고 모델임을 의미한다.


10. 장고에 변화 알려주기

어플리케이션 수정하고나면 장고에게 알려줘야한다. 왜냐하면 데이터베이스에 모델을 위한 테이블을 만들어야하기 때문!
1. python manage.py makemigrations 어플리케이션이름 : 데이터베이스에 반영할 수 있는 마이그레이션 파일 생성
이렇게 하면 만든거고,
2. python manage.py migrate 어플리케이션이름 : 실제 데이터베이스에 모델 추가


11. 관리자

모델링한 글들을 장고 관리자에서 추가하거나 수정, 삭제할 수 있다.
blog/admin.py에 모델을 from .models import 모델명
admin.site.register(모델명)로 모델을 등록
python manage.py createsuperuser 로 관리자 생성


12. urls

URLconf : 장고에서 URL과 일치하는 뷰를 찾기 위한 패턴들의 집합

💡 메인의 urls.py
1. mysite/urls.py 파일을 깨끗하게 유지하기 위해, blog 애플리케이션에서 메인 mysite/urls.py파일로 url들을 가져와야한다.
blog.urls를 가져오려면, include 함수가 필요하다.
from django.urls 행을 찾아 include 함수를 추가한다.
2. urlpatternspath('', include('blog.urls'))를 추가한다.


💡 앱의 urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
]

post_list라는 view가 루트 URL에 할당된 것이다.
이것으로 장고에게 누군가 웹사이트에 'http://127.0.0.1:8000/' 주소로 들어왔을 때 views.post_list를 보여주라고 알려줄 수 있다.


13. 뷰 만들기

  • 뷰 : views.py는 애플리케이션의 "로직"을 넣는 곳
    모델에서 필요한 정보를 받아와서 템플릿에 전달하는 역할
    -> 모델과 템플릿을 연결하는 역할
    뷰를 만들고, 템플릿을 만들어서 어떻게 보여줄지 만들어야 한다. (템플릿 동적 데이터)
  1. from .models import 모델명 으로 모델 가져오기
    모델에서 블로그 글을 가져오기 위해서는 쿼리셋(QuerySet)이 필요함
  2. Post.objects.all() 하거나 filter걸어서 가져오고 싶으면 Post.objects.filter(필터 조건) 으로 변수 만들어주기
  3. 매개변수 추가해서 템플릿에 넘겨주기
    return render(request, 'blog/post_list.html', {'posts': posts})

14. 템플릿

blog -- templates -- blog 폴더 생성
디렉토리 안에 post_list.html 생성
html 신나게 작성하면 된다.

템플릿 태그 이용해서 빠르게 만들기 (if, for 등)


15. 쿼리셋

  • 쿼리셋(QuerySet) : 전달받은 모델의 객체 목록
    쿼리셋은 데이터베이스로부터 데이터를 읽고, 필터를 걸거나 정렬을 할 수 있다.

16. CSS

blog -- static -- css 폴더 안에 blog.css 생성, 여기에 작성

템플릿에 연결하려면
1. html파일 맨위에 {% load static %} 추가
2. <link rel="stylesheet" href="{% static 'css/blog.css' %}"> head에 추가


17. 템플릿 확장

base.html 만들기
이건 장고걸스 내용 보자 -> 장고걸스 템플릿 확장하기

18. 애플리케이션 확장

이건 장고걸스 내용 보자 -> 장고걸스 애플리케이션 확장하기

pk : 데이터베이스의 각 레코드를 식별하는 기본키(Prmiary Key)

post.pk를 써서 기본키에 접근할 수 있고 같은 방법으로 Post객체내 다른 필드(title, author)에도 접근할 수 있다.

순서
1. 상세페이지 url 만들기
2. 상세페이지 뷰 추가하기
3. 상세페이지 템플릿 만들기


<주의 사항>

  1. 깃허브에 올릴 때는 반드시 settings.pySECRET_KEY 를 분리하자!
    분리하고 gitignore 에 시크릿키 파일 적어줘야 깃에 안올라간다.
    시크릿키 분리 방법
    Pythonanywhere를 통해 배포하는데 깃에 있는 코드만 복사해서 썼더니 시크릿키가 없다고 떠서 한참을 고생했다. 😂
    깃에는 시크릿키 파일을 안올렸으니 수동으로 Pythonanywhere에 시크릿키를 업로드해줘야한다.

  2. Pythonanywhere를 통해 배포할 때, git의 코드를 pull하고 반드시 web tab에서 reload 버튼을 눌러줘야한다.
    자동으로 반영되는게 아니라 꼭 버튼을 눌러줘야 반영된다. 이것때문에 noreversematch 에러가 떠서 한참을 고통속에 힘들어했다. 조심하자!

0개의 댓글