가상환경 만들고 장고 실행하기
가상환경 설치 방법은 여기서 확인하기
test1 이라는 가상환경 만들기
conda create -n "test1" python=3.7
가상환경 실행
conda activate "test1"
pip install django
test1 이라는 디렉토리 만들기 (이 디렉토리에서 django 프로젝트 시작할 것)
필수는 아님
mkdir test1
아래의 명령어로 test1 디렉토리로 이동
cd test1
위에서 만든 test1 디렉토리 내부에서 장고 프로젝트를 만들 것
장고 프로젝트명은 mysite
django-admin startproject mysite
tree라는 명령어를 이용하면 디렉토리 내부의 구조를 확인할 수 있음
mysite의 구조를 확인해보면 아래와 같음
.
└── mysite
├── manage.py
└── mysite
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
사이트 관리를 도와주는 역할
manage.py를 이용하여 다른 설치 작업 없이 컴퓨터에서 웹 서버를 시작할 수 있음
웹사이트 설정이 있는 파일
현재 Django project 의 URL 선언을 저장
Django 로 작성된 사이트의 "목차"를 의미
my site 디렉토리로 이동
cd mysite
my site에서 manage.py을 실행
실행은 아래의 명령어 이용
python manage.py runserver
Django App은 Django에서 사용하는 파이썬 패키지
Django App 패키지는 그 안에 자신의 모델(model), 뷰(view), 템플릿(template), URL 매핑 등을 독자적으로 가지고 있음
일반적으로 하나의 Django 프로젝트는 하나 이상의 Django App으로 구성되어 있음
python manage.py startapp polls
위의 명령어로 polls라는 app을 생성
tree를 보면 아래와 같이 나타남
.
├── db.sqlite3
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ ├── settings.cpython-37.pyc
│ │ ├── urls.cpython-37.pyc
│ │ └── wsgi.cpython-37.pyc
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── polls
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
polls 디렉토리 안의 views.py에서 작업
cd polls
위의 명령어를 이용하여 polls 디렉토리로 이동하고
아래의 명령어로 views.py를 열고 수정할 수 있음
vim views.py
views.py에 아래의 내용을 입력
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
HttpRequest와 짝을 이루며 response를 반환
함수의 인자(request)로 HttpRequest 객체를 받아옴
그 후 HttpResponse를 return함
polls 디렉토리에 URL의 내용을 담을 수 있는 파일인 urls.py를 생성하고 아래의 내용 추가
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
mysite 디렉토리의 urls.py에 아래의 내용 추가
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
이후에 서버를 실행하면 polls 페이지와 admin 페이지를 확인할 수 있음
아래의 내용 추가
from django.db import models
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)
여기서 CharField, IntegerField, DateTimeField 등은 데이터베이스의 필드
여태까지 mysite라는 프로젝트를 만들었고 그 프로젝트 내부에 polls라는 app을 새로 만들었음
이 app을 현재의 프로젝트(mysite)에 추가 시켜주어야 만들었던 앱이 프로젝트에 포함됨
이는 settings.py에서 진행할 수 있음
mysite의 settings.py에는 아래의 내용이 포함되어있음
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
이곳이 바로 app을 추가하는 부분
여기에 polls app을 추가하면 아래와 같음
INSTALLED_APPS = [
'polls.apps.PollsConfig', # 추가한 app
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
아래의 명령어 이용하여 migrations 생성
python manage.py makemigrations polls
새로운 모델을 만든 것(변경사항)을 감지하여 새로운 migration을 만들라는 의미
관리 사이트(admin)에 접속할 수 있는 사용자를 만들기
아래와 같은 명령으로 만들 수 있음
python manage.py createsuperuser
이후 username과 email, password등을 설정함
아래와 같이 설정할 수 있음
Username: admin
Email address: admin@example.com
Password: **********
Password (again): *********