2021. 4. 5. 01:13ㆍDev/Django
#APP 만들기
Django를 시작해보자. 먼저 만들 App에 관한 폴더를 만들어야한다.
설문조사 어플리케이션을 만들어보겠다. 따라서 App의 이름은 polls로 하고 아래의 명령으로 디렉토리를 만든다.
---프로젝트폴더(manage.py가 존재하는 곳)---
python3 mangage.py startapp 폴더이름
이제 Django로 Server를 실행시킨 후,
http://localhost:8000/polls로 들어가면 안녕하세요 라는 문구를 띄워보자
디렉토리를 만들고, 다음 파일을 아래와 같이 수정하자.
#polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("안녕하세요, 이것은 polls 파일의 index입니다.")
Django에서 가장 간단한 형태의 view이다. index의 return값을 view에 보여준다. 이 값을 /polls url에서 보여주기 위해 다음 파일을 열어보면 아래와 같이 나온다.
#polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
urlpatterns를 통해, 내가 원하는 url들을 추가하고, 해당 urls들에서 보여줄 view를 표시할 수 있다.
path(URL주소, 보여줄 view의 내용, view의 이름) 를 추가하여 urls을 추가할 수 있다.
이후 최상위 URLconf에서 내가 만든 App의 url을 바라보게 설정해야 하므로, 아래 파일을 열고 다음과 같이 수정한다.
#프로젝트폴더/urls.py
...
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
urlpatterns에 내가 만든 app의 url을 include() 함수로 추가한다. include()함수는 다른 URLconf를 참조할 수 있게 한다.
이제 http://localhost:8000/polls로 들어가면, index의 view의 내용을 볼 수 있을 것이다.
#DMBS 만들기
Django는 기본적으로 SQLite DBMS를 제공한다. 따라서 간단한 App같은 경우는 SQLite를 사용해도 무방하나, 실제 프로젝트 규모가 커진다면 익숙한 다른 DBMS를 사용하는 것이 좋을 것이다.
먼저 데이터베이스의 시간대를 수정하기 위해서, 아래 파일을 열고 시간대를 서울로 설정한다.
#프로젝트폴더/settings.py
...
TIME_ZONE = 'Asia/Seoul'
...
이후 데이터베이스의 테이블을 (미리) 만들기 위해 아래 명령을 실행한다.
---프로젝트폴더(manage.py가 있는 곳)---
python3 manage.py migrate
이 명령은 데이터베이스의 테이블을 만든다. 이것은 단지, 테이블을 생성 뿐 아니라 수정 및 삭제에도 사용됨으로 테이블의 구조가 수정되거나 삭제되었을 경우에도 이 명령을 통해 데이터베이스 테이블에 반영해야 한다.
설문조사 어플리케이션에서 필요한 데이터 구조는 무엇이 있을까?
그것은 물론 질문(Question)이 있고 각 질문에 대한 선택사항(Choice)가 있을 것이다.
따라서 이 내용을 바탕으로 데이터베이스 구조를 만들어야 한다. 데이터베이스 구조를 만들기 위해 파일을 아래와 같이 수정 후 데이터베이스에 반영해야 한다.
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
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
models는 데이터베이스의 테이블을 만드는데 사용된다. Question과 Choice 테이블에 대한 설명은 다음과 같다.
#Question
question_text : 질문 내용(Char형, 200자 이하)
pub_date : 질문 생성 날짜/시간(datetime형)
Question을 출력할 때, 질문 내용이 표시된다.
#Choice
ForeignKey : 하나의 Choice에는 하나의 Question이 대응, Question이 삭제된다면 Choice도 삭제(데이터 불변성 : CASCADE)
choice_text : 선택지 내용
votes : 얼마나 많이 선택되었는가(기본값 = 0)
Choice를 출력할 때, 선택지 내용이 표시된다.
이후 이 models(데이터베이스 테이블)들을 Django에 반영해야 한다. 파일을 아래와 같이 수정한다.
#프로젝트폴더/setting.py
...
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
...
파일 수정 이후, 실제 Django에 반영하기 위해 terminal에서 다음 명령어를 입력한다.
---프로젝트폴더---
python3 manage.py makemigrations polls
python3 manage.py migrate
polls 폴더의 models를 makemigrations 명령을 통해 변경사항을 만들고, migrate를 통해 데이터베이스에 반영한다.
이후 shell을 통해 터미널에서 직접 데이터베이스를 만질 수 있는데, 나는 슈퍼계정을 만들어 편하게 관리해보도록 하겠다.
#DBMS에 데이터 추가 - 슈퍼계정 이용
python3 manage.py createsuperuser
위 명령을 이용하면 http://localhost:8000/admin에 접속했을 때 로그인하여 서버 및 데이터베이스를 관리할 수 있는 슈퍼 계정을 만들 수 있다. 명령어를 통해 계정을 만들고 admin url에 들어가서 데이터베이스를 관리할 수 있다.
데이터베이스를 슈퍼 계정에서 관리하기 위해, 파일을 아래와 같이 수정한다.
#polls/admin.py
from django.contrib import admin
from .models import Question, Choice
admin.site.register(Question)
admin.site.register(Choice)
models로부터 내가 만든 DBMS의 Question과 Choice 테이블을 불러오고, admin에 추가한다. 이후 http://localhost:8000/admin에 접속하면, Question과 Choice테이블을 관리 할 수 있다.
다음에는 view에 관한 내용을 더 다뤄보겠다.
출처 :
docs.djangoproject.com/ko/3.1/intro/tutorial01/
첫 번째 장고 앱 작성하기, part 1 | Django 문서 | Django
Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate
docs.djangoproject.com
docs.djangoproject.com/ko/3.1/intro/tutorial02/
첫 번째 장고 앱 작성하기, part 2 | Django 문서 | Django
Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate
docs.djangoproject.com
'Dev > Django' 카테고리의 다른 글
Django REST Framework(DRF)로 회원가입/로그인/로그아웃 하기 (0) | 2021.05.17 |
---|---|
Django User DB 커스텀하기 (0) | 2021.05.15 |
Django 시작하기 #2 - View, Template (0) | 2021.04.11 |
Django란? (0) | 2021.03.30 |