개발

Python, Django 간단한 서비스 기능 만들기: 게시판 만들기

escser 2023. 3. 28. 22:25

1. 게시판 페이지 만들기

2. 데이터베이스 저장하기

3. 관리자 권한주기

4. 게시판 데이터 만들기

5. 게시판 조회

 

1. 게시판 페이지 만들기

1.1 게시판 html 생성

web_board/main/templates/main/blog.html

<html>
    <head>
        <title>Blog List</title>
    </head>
    <body>
        <h1>게시판 페이지입니다</h1>
    </body>
</html>

1.2 게시판 html 렌더링

web_board/main/views.py

from django.shortcuts import render

# html 페이지를 부르는 함수들

def index(request):
    return render(request, 'main/index.html')

def blog(request):
    return render(request, 'main/blog.html')

 

1.3 url 정보 연결

web_board/main/urls.py

urlpatterns = [
	path('', views.index, name='index'),
    path('blog', views.blog),
]

 

runserver 후 localhost:8000/blog 접속

 

2. Model 만들기

장고에서 model을 지원해준다.

(web_board/main/models.py 페이지에 정의하는 대로 DB 테이블을 만들어줌)

from django.db import models

# 장고에서 model을 지원해준다.
# Create your models here.

class Post(models.Model):
    postname = models.CharField(max_length=50)
    contents = models.TextField()

 

2.1 데이터베이스 저장

models.py 작성 후 모델을 데이터베이스에 저장

$ python manage.py makemigrations

$ python manage.py migrate

 

3. 관리자 권한

3.1 관리자 권한 부여

web_board/main/admin.py

from django.contrib import admin

# Register your models here.
from .models import Post

admin.site.register(Post)

3.2 관리자 계정 생성

Superuser 로 만들다.

$ python manage.py createsuperuser

 

3.3 localhost:8000/admin 로그인

 

4. 게시글 작성

게시글 데이터를 생성 후 이와 같이 객체 표현으로 나온다.

web_board/main/models.py 수정

class Post(models.Model):
    postname = models.CharField(max_length=50)
    contents = models.TextField()

    def __str__(self):
        return self.postname

객체를 표현 Post Object(1) 대신 다른 형식으로 표현하기 위한 함수 정의

 

5. 게시판 조회

5.1 blog.html 데이터 전달

(web_board/main/views.py)

호출되는 html 페이지와 같이 넘길 데이터를 정의해준다.

from .models import Post

def blog(request):
	postlist = Post.objects.all()
	return render(request, 'main/blog.html', {'postlist':postlist})

 

5.2 blog.html 수정

web_board/main/templates/main/blog.html

<html>
    <head>
        <title>Blog List</title>
    </head>
    <body>
        <h1>게시판 페이지입니다</h1>
        <table>
        {% for list in postlist %}
            <ul>
                <li>{{list.postname}}</li>
                <li>{{list.contents}}</li>
            </ul>
        {% endfor %}
        </table>
    </body>
</html>

 

localhost:8000/blog

 

Python, Django 간단한 서비스 기능 만들기 (a-z) 가상 환경

Python, Django 간단한 서비스 기능 만들기: 앱 만들기

>> Python, Django 간단한 서비스 기능 만들기: 게시판 만들기

참고: https://wikidocs.net/91420