Post

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 관리자 페이지로 접속할 수 있습니다.

This post is licensed under CC BY 4.0 by the author.