Django 끄적이기
Django로 웹사이트 만들기: 파이썬 기반 웹 프레임워크
Django를 이용한 웹사이트 개발
Django는 파이썬 기반의 웹 프레임워크로, 강력한 기능과 유연성을 제공합니다. 이 포스트에서는 Django를 사용하여 웹사이트를 만드는 방법을 알아보겠습니다.
Django 설치 및 환경 설정
아나콘다 가상환경 설정
먼저, 아나콘다 가상환경을 설정합니다. 아래의 명령어를 이용하여 Python 3.5 버전의 가상환경을 생성합니다.
1
conda create -n name python=3.5
Django 설치
가상환경 설정이 완료되면, pip를 이용하여 Django를 설치합니다.
1
pip install django
Django 프로젝트 생성
Django 프로젝트를 생성합니다. 아래의 명령어를 이용하여 ‘mysite’라는 이름의 Django 프로젝트를 생성합니다.
1
django-admin.py startproject mysite .
Django 프로젝트 설정
생성된 Django 프로젝트의 설정을 변경합니다. ‘settings.py’ 파일을 수정하여 웹사이트의 설정을 변경할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com']
LANGUAGE_CODE = 'ko'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
또한, SQLite를 이용하여 데이터베이스를 설정합니다.
1
2
3
4
5
6
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
데이터베이스 마이그레이션
설정이 완료되면, 데이터베이스 마이그레이션을 진행합니다.
1
python manage.py migrate
마이그레이션 이후, Django 웹서버를 실행하여 웹사이트를 확인할 수 있습니다.
1
python manage.py runserver
이제 웹 브라우저를 열고 ‘127.0.0.1:8000’ 주소로 접속하면 Django 웹사이트를 확인할 수 있습니다.
Django 앱 생성
Django에서는 웹사이트의 각 기능을 ‘앱’ 단위로 관리합니다. 아래의 명령어를 이용하여 ‘blog’라는 이름의 앱을 생성합니다.
1
python manage.py startapp blog
생성된 앱을 Django 프로젝트에 등록하려면, ‘settings.py’ 파일의 ‘INSTALLED_APPS’ 설정에 앱 이름을 추가합니다.
1
2
3
4
5
6
7
8
9
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
Django 앱 모델 생성
Django에서는 데이터베이스의 각 테이블을 ‘모델’로 표현합니다. ‘blog/models.py’ 파일을 수정하여 ‘Post’라는 이름의 모델을 생성합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
모델 생성이 완료되면, 아래의 명령어를 이용하여 데이터베이스에 테이블을 생성합니다.
1
2
python manage.py makemigrations blog
python manage.py migrate blog
Django 관리자 페이지 설정
Django는 강력한 관리자 페이지를 제공합니다. ‘blog/admin.py’ 파일을 수정하여 ‘Post’ 모델을 관리자 페이지에서 관리할 수 있도록 설정합니다.
1
2
3
4
from django.contrib import admin
from .models import Post
admin.site.register(Post)
슈퍼 사용자 생성
Django 관리자 페이지에서 데이터를 관리하려면, 슈퍼 사용자 계정이 필요합니다. 아래의 명령어를 이용하여 슈퍼 사용자를 생성합니다.
1
python manage.py createsuperuser
이제 Django 관리자 페이지에서 ‘Post’ 모델의 데이터를 추가, 수정, 삭제할 수 있습니다.
Django 웹사이트를 GitHub와 PythonAnywhere를 이용해 배포하기
Django로 만든 웹사이트를 GitHub와 PythonAnywhere를 이용하여 인터넷에 배포하는 방법에 대해 알아보겠습니다.
필요한 도구
- GitHub: 소스 코드 관리를 위한 원격 저장소 서비스
- PythonAnywhere: Python 기반 웹 애플리케이션을 호스팅하는 클라우드 서비스
GitHub를 이용한 소스 코드 관리
먼저, GitHub를 이용하여 소스 코드를 원격 저장소에 저장합니다. 이를 위해 다음과 같은 단계를 따릅니다.
GitHub 웹사이트에서 원격 저장소를 생성합니다.
- git clone 명령어를 이용하여 원격 저장소를 로컬에 복제합니다.
- 복제된 원격 저장소에 Django 웹사이트의 소스 코드를 추가합니다.
- git commit 명령어를 이용하여 소스 코드의 변경 사항을 저장합니다.
- git pull 명령어를 이용하여 원격 저장소의 최신 내용을 로컬에 반영합니다.
PythonAnywhere를 이용한 웹사이트 배포
다음으로, PythonAnywhere를 이용하여 웹사이트를 인터넷에 배포합니다. 이를 위해 다음과 같은 단계를 따릅니다.
- PythonAnywhere의 콘솔에 접속하여 Bash를 선택합니다.
- git clone 명령어를 이용하여 GitHub의 원격 저장소를 PythonAnywhere에 복제합니다.
- virtualenv 명령어를 이용하여 가상 환경을 생성하고, source 명령어를 이용하여 가상 환경을 활성화합니다.
- pip install 명령어를 이용하여 Django를 설치합니다. python manage.py migrate 명령어를 이용하여 데이터베이스를 생성하고, python manage.py createsuperuser 명령어를 이용하여 관리자 계정을 생성합니다.
PythonAnywhere 웹 앱 설정
PythonAnywhere에서 웹 앱을 설정하여 웹사이트를 인터넷에 배포합니다.
- PythonAnywhere의 웹 메뉴로 이동하여 ‘Manual configuration’을 선택하고, Python 3.6을 선택합니다.
- ‘Virtualenv’ 섹션으로 이동하여 가상 환경의 경로를 입력합니다.
- ‘WSGI configuration file’ 섹션으로 이동하여 WSGI 설정 파일을 아래와 같이 수정합니다.
1
2
3
4
5
6
7
8
9
10
11
12
import os
import sys
path = '/home/<your-PythonAnywhere-username>/my-first-blog' # PythonAnywhere 계정으로 바꾸세요.
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
from django.core.wsgi import get_wsgi_application
from django.contrib.staticfiles.handlers import StaticFilesHandler
application = StaticFilesHandler(get_wsgi_application())
이제 웹 브라우저를 열고 PythonAnywhere에 배포된 Django 웹사이트의 주소로 접속하면 웹사이트를 확인할 수 있습니다. ‘/admin/’을 URL 뒤에 추가하면 Django 관리자 페이지로 접속할 수 있습니다.