[Back] Django
🧐 Today I Learned (TIL)
- Django 설치
- Django 기초
1. Django 설치
- Django 설치
- 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.py
의 path('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에 반영되도록 구성이 된다.
📚 참고
Author And Source
이 문제에 관하여([Back] Django), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@maketheworldwise/Back-Django
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여([Back] Django), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@maketheworldwise/Back-Django저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)