본문 바로가기
Ubuntu

4.[설치 및 세팅]Postgresql 나만의 게시판을 만들어보자 [1/2]

by 모아모아 리뷰 2023. 11. 19.
반응형

Postgresql 소개 : 

관계형 데이터베이스 관리 시스템 (RDBMS) 대용량 데이터의 처리,다중 사용자 환경에서 안정적으로 작동하며 다양한 기능 제공

 

1. Postgresql 설치 및 세팅 :

 

I : 나의 가상환경 venv에서 psql 설치

sudo apt update
sudo apt install postgresql postgresql-contrib

II : Postgresql 사용자 생성 

Django 에서 사용하는 DB 사용자를 생성해줌.

sudo -u postgres createuser --interactive

 

III : 데이터베이스 생성

sudo -u postgresql createdb <데이터베이스 이름>

 

IIII : Django 프로젝트와 PostgreSQL 연동

settings.py 파일의 Databases 설정을 PostgreSQL로 변경

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '<데이터베이스 이름>',
        'USER': '<데이터베이스 사용자>',
        'PASSWORD': '<비밀번호>',
        'HOST': 'localhost',
        'PORT': '',
    }
}

 

V : psycopg2 설치

Python에서 PostgreSQL을 사용하기 위해서 psycopg2 라이브러리를 설치해야 됨.

pip install psycopg2

 

VI : 마이그레이션 (Ubuntu 세팅 마무리)

python3 mange.py makemigrations
python3 manage.py migarte

 

2. Local 환경에서 게시판 구현

 

I : 모델 생성 

# models.py

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

 

 

II : 게시판 뷰 생성

# views.py
from django.shortcuts import render
from .models import Post

def board(request):
    posts = Post.objects.all()
    return render(request, 'board.html', {'posts': posts})

 

III : 템플릿 작성

<!-- board.html -->
<!DOCTYPE html>
<html>
<head>
    <title>게시판</title>
</head>
<body>
    <h1>게시판</h1>
    <ul>
        {% for post in posts %}
            <li>{{ post.title }} - {{ post.created_at }}</li>
        {% endfor %}
    </ul>
</body>
</html>

IIII : URL 설정

 

# urls.py
from django.urls import path
from .views import board

urlpatterns = [
    path('board/', board, name='board'),
 
]

 


결과:

설명 :

게시판 form 은 codepen 에서 참고하였으며 

Models.py title, content, created_at 각각의 필드로 제목, 내용, 글 작성 시간 필드를 생성해줬고

작성(POST) 시에는 데이터베이스에 각각의 필드로 매핑되어 저장되게 됩니다.

 

다음 시간에는 글 작성 하는 방법을 알아보겠습니다.

 

 

반응형

최근댓글

최근글

skin by © 2024 ttutta