[Back] Django

10321 단어 backdjangoback

🧐 Today I Learned (TIL)

  • Django 설치
  • Django 기초

1. Django 설치

맥에서는 python을 실행하면 기본으로 설치된 2.7 버전을 실행한다. 따라서 v3으로 설치해주고 변경해준다.

# python3 설치
brew install python3
echo "alias python=/usr/local/bin/python3" >> ~/.zshrc
echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc
source .zshrc

# Django 설치
python -m pip install Django

2. Django 기초

Django 문서의 설문 앱 제작 튜토리얼로 진행한다.

2-1. 프로젝트 생성

프로젝트를 생성했을 때 여러 파일들이 생성이 되는데, 그 중에서 가장 중요하게 봐야하는 파일은 3개이다.

  • manage.py (전체적인 장고 서버를 운영하는 main 파일)
  • settings.py (장고의 다양한 세팅이 작성된 파일)
  • urls.py (url 처리 파일)
django-admin startproject mysite

2-2. 프로젝트 실행

가장 기본적으로 구성된 프로젝트로 실행하면 기본적으로 제공하는 화면을 확인할 수 있다.

python manage.py runserver

2-3. 라우팅

튜토리얼의 지시대로 설문지 앱을 만들고

python manage.py startapp polls

코드를 수정해준 뒤 실행을 하면, 접속 시 mysite 디렉토리의 urls.pypath('polls/', include('polls.urls')) 코드를 통해 polls 디렉토리의 urls.py를 통해 라우팅이 되는 것을 확인할 수 있다.

  • admin.py
    어드민용으로 사용하는 파일이다.

  • models.py
    데이터베이스에 접근하기 위해 사용하는 파일이다.

  • views.py
    비즈니스 로직이 담겨지는 파일이다.

2-4. 모델링

기본 어플리케이션들 중 몇몇은 최소한 하나 이상의 데이터베이스 테이블을 사용한다. 따라서 데이터베이스에서 테이블을 미리 만들어주기 위해 migrate명령을 실행해준다. (기본 데이터베이스 SQLite 사용)

python manage.py migrate

models.py는 데이터베이스의 모델링에 사용되는 파일이다. 마찬가지로 튜토리얼 대로 models.py에 Question 클래스와 Choice 클래스를 정의해주고 현재 프로젝트에게 polls 앱이 설치되어 있다는 것을 알려주기 위해 settings.py 파일에서 INSTALLED_APPS를 수정해준다.

makemigrations 명령어를 수행하면 models.py에 정의된 내용에 따라 0001_initials.py 파일이 생성되는 것을 확인할 수 있다.

python manage.py makemigrations polls

0001_initials.py 파일로 migration이 내부적으로 어떤 SQL 문장을 실행하는지 살펴볼 수 있다.

python manage.py sqlmigrate polls 0001

마지막으로 쉘을 열어 데이터베이스에 데이터를 넣고 확인해본다.

python manage.py migrate
python manage.py shell
>>> from polls.models import Choice, Question
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now())
>>> q.save()
>>> Question.objects.all()
>>> q.question_text
>>> q.question_text = 'hey'
>>> q.save()
>>> q.question_text
>>> q.pub_date
>>> Question.objects.get(pk=1)

2-3. 관리자

Django는 기본적인 관리자 페이지를 제공해준다. http://127.0.0.1:8000/admin/를 통해 관리자 페이지로 이동할 수 있다.

python manage.py createsuperuser
Username: admin
Email address: [email protected]
Password:

python manage.py runserver

튜토리얼처럼 admin.py 파일을 수정하여 관리자 사이트에서 poll 앱을 변경가능하도록 설정해주면 DB에 생성한 테이블을 조작할 수 있게 된다.

2-4. 뷰

뷰는 Django 애플리케이션이 일반적으로 특정 기능과 템플릿을 제공하는 웹페이지의 한 종류이다. 튜토리얼대로 진행하게 되면 일반 html 문서와는 다르게 {% %}을 이용하여 작성된 것을 볼 수 있다.

{% if latest_question_list %}
    <ul>
    {% for question in latest_question_list %}
        <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

튜토리얼에서는 Path Variable을 이용하여 상세 조회가 가능한 페이지를 구성하고 조회가 안되는 내용에 대해 404 페이지를 띄울 수 있도록 구성한다. 그 외에는 url 하드 코딩 코드를 제거해주거나 django.shortcuts에서 제공하는 함수들을 이용하여 더 간편하게 코드를 작성하는 방법에 대해 기술되어있다.

<!-- 하드 코딩 -->
<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>

<!-- 하드 코딩 제거 -->
<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>

2-5. 폼

튜토리얼대로 진행하면 폼에 입력된 결과를 DB에 반영되도록 구성이 된다.


📚 참고

좋은 웹페이지 즐겨찾기