python django 프레임워크에서 postgres 디비연동 후
데이터베이스의 테이블 정보를 브라우저에 출력하는 내용입니다.
윈도우환경, pycharm, venv, django 폴더생성(설정폴더 등)
로컬 postgres 데이터베이스, 사용자계정, 패스워드, 생성 후 작업
pycharm 터미널에서 전처리
venv 환경에서 아래 명령어 실행
pip install django
django-admin startproject myproject
python manage.py startapp appview
생성된 django 프레임워크 구조
models.py 파일
# appview/models.py
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
published_date = models.DateField()
isbn_number = models.CharField(max_length=13, unique=True)
pages = models.IntegerField()
language = models.CharField(max_length=10)
class Meta:
db_table = 'custom_book_table' # create tabel 시 명시적 테이블 이름 지정
def __str__(self):
return self.title
admin.py 파일
# appview/admin.py
from django.contrib import admin
from .models import Book
admin.site.register(Book)
appview폴더 > urls.py 파일
# appview/urls.py
from django.urls import path
from . import views # views 임포트
urlpatterns = [
# 기본적인 뷰를 연결
path('', views.index, name='index'),
]
views.py 파일
# appview/views.py
from django.shortcuts import render
from .models import Book
def index(request):
books = Book.objects.all() # Book 모델의 모든 데이터를 가져옴
return render(request, 'appview/book_list.html', {'books': books})
tamplatates폴더 book_list.html 파일
<!-- book_list.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Book List</title>
</head>
<body>
<h1>Book List</h1>
<ul>
<!-- books는 views.py에서 전달한 데이터 -->
{% for book in books %}
<li>
<strong>{{ book.title }}</strong> by {{ book.author }}<br>
Published: {{ book.published_date }}<br>
ISBN: {{ book.isbn_number }}<br>
Pages: {{ book.pages }}<br>
Language: {{ book.language }}
</li>
{% empty %}
<li>No books available.</li>
{% endfor %}
</ul>
</body>
</html>
myproject폴더 > urls.py 파일
# myproject/urls.py
from django.contrib import admin
from django.urls import path, include # include 임포트
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('appview.urls')), # 'appview.urls'로 URL 연결
]
myproject폴더 > settings.py 파일
#settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', # 세션 미들웨어 추가
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', # 인증 미들웨어 추가
'django.contrib.messages.middleware.MessageMiddleware', # 메시지 미들웨어 추가
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates', # 템플릿 백엔드 설정
'DIRS': [],
'APP_DIRS': True, # 앱 내 템플릿 디렉토리 사용
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
INSTALLED_APPS = [
'django.contrib.admin', # admin 앱 추가
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'appview'
# 기타 앱'들...
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'database_d',
'USER': 'users',
'PASSWORD': '1234',
'HOST': 'localhost',
'PORT': '5432',
'OPTIONS': {
'client_encoding': 'UTF8', # 인코딩을 UTF-8로 설정
}
}
}
DEBUG = True #개발시 True 운영시 False 비꿔야함
# 정적 파일을 제공할 URL 경로
STATIC_URL = '/static/' # 기본값으로 /static/ 경로 사용
ROOT_URLCONF = 'myproject.urls'
SECRET_KEY = '6z1r5$e8@5vcf2x0z3@pt#9h%x8g2hl7m+5e90$&pftt&5h@fd'
postgres 데이터 베이스 database_d 생성 아이디 users 생성, 패스워드 1234 생성 , grant 권한부여
후에
위 스크립트 작성후 터미널에
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
처음 브라우저 출력시 테이블에 데이터가 없으므로
Book list
Not avaliavable
출력됨
postgres 데이터베이스 접속해서
postgres custom_book_table 테이블에 insert 쿼리 삽입
INSERT INTO custom_book_table (title, author, published_date, isbn_number, pages, language)
VALUES
('The Great Gatsby', 'F. Scott Fitzgerald', '1925-04-10', '9780743273565', 218, 'English'),
('1984', 'George Orwell', '1949-06-08', '9780451524935', 328, 'English'),
('To Kill a Mockingbird', 'Harper Lee', '1960-07-11', '9780061120084', 281, 'English'),
('Pride and Prejudice', 'Jane Austen', '1813-01-28', '9780141439518', 279, 'English'),
('Moby-Dick', 'Herman Melville', '1851-10-18', '9781503280786', 585, 'English');
SELCT * FROM custom_book_table;
insert 된 쿼리확인후
터미널에 python manage.py runserver 실행
브라우저창에
http://127.0.0.1:8000
입력시 database_d 데이터베이스 custom_book_table 데이터
정상출력 확인
'Python' 카테고리의 다른 글
python django postgres 데이터베이스 - 필터 기능 추가 (2/2) (1) | 2024.12.14 |
---|---|
파이썬 pycharm django 연동 (0) | 2024.12.13 |
로또 번호 추출 파이썬 프로그래밍 (1) | 2024.10.25 |
AI CHAT PROMPT (1) | 2024.10.25 |