[Django] Django 설치 및 튜토리얼 뽀개기! - 1편
[Django 설치 및 프로젝트 생성]
1. Django 설치 방법
python -m pip install Django
2. 'mysite'라는 프로젝트 만들기
django-admin startproject mysite
현재 디렉토리 안에 'mysite'라는 디렉토리가 생성되며 구조는 다음과 같음 (디렉토리 구조 보는 명령어: tree /a /f )
3. 프로젝트가 잘 돌아가는지 확인
manage.py 가 있는 디렉토리에서 아래 명령어 실행
python manage.py runserver _____ (포트 혹은 서버 IP 바꾸려면 빈칸에 추가하면 됨)
http://127.0.0.1:8000/ 에 접속하면 아래와 같은 화면이 뜸 => 성공!
[설문조사 앱(App) 만들기]
manage.py 가 있는 디렉토리에서 아래 명령어 입력해서 설문조사 앱 만들기
python manage.py startapp polls
polls 앱이 생성되고 디렉토리 구조는 다음과 같음
mysite/polls/ 안의 views.py에 아래와 같은 코드를 작성
from django.http import HttpResponse
def indes(request):
return HttpResponse("Hello, world.")
이 코드를 실행하기 위해서는 mysite/polls/ 안에 urls.py 파일을 생성해야 함
그리고 아래와 같은 코드 작성
urls.py 역할은 views.py 내의 함수와 url을 연결해줌
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index')
]
mysite/mysite/urls.py을 아래와 같이 추가하여 mysite/polls/urls.py 의 path들이 연결되도록 함
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
Terminal 창에서 아래 명령어를 입력해 서버 실행
python manage.py runserver
이후 http://localhost:8000/polls/ 에 접속하면 views.py의 index 함수가 실행된 것을 볼 수 있음
[모델 만들고 활성화]
데이터베이스 테이블 생성
python manage.py migrate
mysite/polls/models.py 에 Question, Choice 두 개의 모델 생성
Django에서 모델은 데이터베이스 구조로 생각하면 됨
from django.db import models
# Create your models here.
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
프로젝트에 polls 앱이 있다는 것을 알려야 함
mysite/mysite/settings.py 의 INSTALLED_APPS 에 다음과 같이 polls.apps.PollsConfig 추가
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
아래 명령어를 통해 모델 변경사항을 저장
모델과 관련된 테이블 생성
python manage.py migrate
* 모델을 변경 or 추가하는 단계
- (models.py 에서) 모델을 변경
- python manage.py makemigrations => 변경사항에 대한 마이그레이션 생성
- python manage.py migrate => 변경사항을 데이터베이스에 적용
아래는 좀 더 추가한 mysite/polls/models.py
import datetime
from django.db import models
from django.utils import timezone
# Create your models here.
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
[Django 관리자]
관리자 생성
python manage.py createsuperuser
관리자 사이트에서 Question 을 관리하도록 하려면 mysite/polls/admin.py 에 아래 코드 추가
from django.contrib import admin
from .models import Question
admin.site.register(Question)