본문으로 바로가기

Python Django로 게시판 만들기_게시판 구현(1)

category Web Programming/Django 2020. 3. 17. 13:26

안녕하세요. 씨앤텍 시스템즈입니다.

 

 

이번 글은 Pyhton Django로 게시판 생성하는 방법에 대해서 정리해 보았습니다.

 


1. Django를 왜 가상 환경에서 실행해야 하는가?

2. 가상 환경, Django 설치

3. 게시판 글쓰기 구현



1. Django를 왜 독립된 가상 환경에서 실행해야 하는가?

Django(이하 장고)를 독립된 가상환경에서 실행해야 하는 이유는 파이썬이나 라이브러리의 버전을 분리하고 인터넷에서 다운로드 한 파이썬 라이브러리들이 충돌을 일으키는 것을 방지하기 위해서입니다.

 

2. 가상 환경, Django 설치

2-1. 가상환경 설치

기존에 장고 프로젝트를 실행했던 폴더의 상위 폴더에서 가상 환경을 설치합니다.

python -m venv 가상환경이름

저는 tech라는 이름으로 가상 환경을 설치했으므로 tech라는 폴더가 추가된것을 확인할 수 있습니다.

가상환경 설치

가상환경을 실행하기 위해서 가상 환경 폴더 아래 있는 Scripts폴더의 activate.bat를 실행해야 합니다.

가상환경폴더\Scripts\activate

가상 환경을 실행하게 되면 프로젝트 경로 앞에 (가상 환경 이름)이 추가된 것을 확인할 수 있습니다.

가상환경 실행

 

2-1-1. 가상 환경 실행 시  발생할 수 있는 오류

Windows10에서 가상 환경이 실행되지 않는 오류가 발생할 수 있습니다.

그 경우에는 [관리자 권한으로 실행]으로 다른 Powershell을 열어 다음의 명령을 입력합니다.

C:\Windows\system32> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Y를 눌러 제한을 해제하고 다시 가상 환경을 실행합니다.

 

 

2-2. Django 설치

가상 환경에 장고를 설치하기 전에, 이전에 설치했던 장고를 삭제합니다.

장고를 삭제하기 위해서는 실행되어있는 가상 환경을 종료합니다.

#가상환경 종료
deactivate

#django 삭제
pip uninstall django

장고 삭제가 완료되었다면 다시 가상환경을 실행한 후 장고를 설치합니다.

장고의 설치 장법은 지난 포스트에서 설명했기 때문에 간단히 하고 넘어가겠습니다.

장고 프로젝트를 만들어주고 게시판 실습을 위한 앱도 만들어줍니다.

pip install django
python -m pip install --upgrade pip
django-admin startproject <프로젝트 명>
cd <프로젝트 명>
python manage.py startapp blog

 

3. 게시판 구현

3-1. admin계정 생성

장고 프로젝트의 url.py를 살펴보면 admin페이지가 있는 것을 확인할 수 있습니다.

django admin 페이지

장고의 admin계정은 페이지에서 직접 회원가입을 하는 게 아닌 명령어로 생성해주어야 합니다.

python manage.py createsuperuser

admin 계정을 생성했다면 장고 서버를 실행하고, 계정이 제대로 생성되었는지 확인합니다.

로그인을 하면 다음과 같은 화면이 나오는 것을 확인할 수 있습니다.

 

3-2. 설정 변경

본격적으로 게시판을 구현하기에 앞서 기본 설정을 변경해보겠습니다.

프로젝트 폴더 안의 settings.py를 열고 이전 단계에서 생성한 blog 앱을 추가합니다.

app 추가

언어, 시간을 변경해줍니다.

언어, 시간 변경

static 경로도 설정해줍니다.

static 경로 설정

 

3-3. model.py 설정

글을 작성하기 위한 model을 설정합니다.

from django.db import models
from django.utils import timezone

# Create your models here.
class Post(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField()
    pub_date = models.DateTimeField(default = timezone.now)

    def __str__(self):
        return self.title

 

3-4. admin.py 설정

model.py에 모델을 작성했으니 admin에 추가합니다.

from django.contrib import admin
from blog.models import Post
# Register your models here.

admin.site.register(Post)

 

3-5. migration

모델이 변경되었으니 장고에 반영하기 위해 마이그레이션 해줍니다.

마이그레이션은 모델의 생성·변경 내역을  관리하고, 데이터베이스에 적용하여 손쉽게 데이터베이스의 구조를 바꾸기 위해 사용하는 명령어 입니다.

python manage.py makemigrations
python manage.py migrate

마이그레이션
마이그레이션

3-6. 변경사항 확인

장고 서버를 실행하고 admin화면에 잘 반영이 되었는지 확인합니다.

기존의 admin화면에 비해 blog 앱이 새로 생겼고, Post라는 model 생성된 것을 확인할 수 있습니다.

admin화면에 반영된 blog 앱

이제 글을 작성해보도록 하겠습니다.

Posts옆의 추가 버튼을 눌러 게시글을 추가합니다.

게시글 작성 초기 화면

Pub date 는 3-3에서 모델을 정의할 때 디폴트 값을 현재로 해놓았기 때문에 자동으로 입력되게 됩니다.

게시글 작성

작성자를 선택하고, 게시글 작성 후 저장을 클릭합니다.

게시글 작성 완료

작성한 게시글이 성공적으로 추가된 것을 확인할 수 있습니다.


지금까지 장고로 게시판을 만들어 보았습니다.

다음 시간에는 admin화면이 아닌 직접 만든 화면에서 글을 작성하고,

url을 통해 접속하는 것을 구현해보도록 하겠습니다.

 

감사합니다.

 

 


댓글을 달아 주세요

  1. aa 2020.10.05 16:10

    중간에 migate 오타인것 같네요