Coding Is My Life

코딩은 인생

파이썬

[Django project][community 만들기 - 게시판 만들기(1)]

산기대 컴공 2021. 12. 23. 09:00
728x90

게시판 만들기

일단 bored라는 이름의 앱을 하나 생성하고 시작하였다. 그리고 똑같이 templates 폴더도 bored 폴더안에 만들어 주었다.

그리고 다음과 같이 게시판에 사용될 html 코드를 작성하였다. 부트스트랩의 기본 예제들을 가지고 간단하게 만들어보았다.

<html>
    <head>
        <meta charset="UTF-8">
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
        <style>
                        .nav_1{
                background: rgba(0,0,0,0.1);
                border-bottom: 1px solid gray;
                height: 50px;
                text-align: right;
            }
            .a{
                text-decoration: None;
                color:white;
            }
        </style>
    </head>
    <body>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous"></script>
        <div class="nav_1">
        <ul class="nav justify-content-end">
            <li class="nav-item">
                <a class="nav-link active" aria-current="page" href="/">홈</a>
            </li>
            <li class="nav-item">
              <a class="nav-link active" aria-current="page" href="#">비트코인</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="/finance/stock">주식</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="/bored/list"> 게시판</a>
              </li>
            <li class="nav-item">
              <a class="nav-link" href="/user/sign_up">회원가입</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href = "/user/login">로그인</a>
            </li>
          </ul>
        </div>
        <div class = "row mt-5">
            <div class = "col-12">
                <table class="table">
                    <thead>
                        <tr>
                            <th>#</th>
                            <th>제목</th>
                            <th>아이디</th>
                            <th>일시</th>
                        </tr>
                    </thead>
                    <tbody>
                        {% for i in boreds %}
                        <tr>
                            <th>{{i.id}}</th>
                            <th>{{i.title}}</th>
                            <th>{{i.writer}}</th>
                            <th>{{i.register_dttm}}</th>
                        </tr>
                        {% endfor %}
                    </tbody>
                </table>
            </div>
        </div>
        <div class = "row justify-content-end">
            <div class = col>
                <button class = "btn btn-primary" onclick="location.href = '/bored/write'">글쓰기</button>
            </div>
        </div>
    </body>
</html>

이제 데이터베이스를 만들어주고 migrate까지 해보겠다.

그전에 setting.py에 들어가서 앱을 추가해줘야 migrate가 된다.

일단 다음과 같이 모델을 만들어 주고 migrate를 해주었다. migrate하는 법은 전에 글을 참고하면 된다.

from django.db import models
from django.db.models.fields import CharField, TextField

# Create your models here.
class Bored(models.Model):
    title = CharField(max_length=64,verbose_name='제목')
    contents = TextField(verbose_name='내용')
    writer = CharField(max_length=64,verbose_name='작성자')

    def __str__(self):
        return self.writer

그리고 admin도 설정해주고 서버을 돌려보고 admin에 들어가서 잘 생성이 됬는지 확인해 보았다.

bored 데이터 베이스가 잘 생성이 되었다.

그러면 이제 view와 url을 설정해 주겠다.

from django.shortcuts import render
from .models import Bored
from django.http import HttpResponse
# Create your views here.
def bored(request):
    boreds = Bored.objects.all().order_by('-id')
    return render(request,'bored.html',{'boreds':boreds})

model에서 Bored의 모든 요소들을 가져와서 정렬해준다음 딕셔너리로 html코드로 넘겨주었다.

path('list','views.bored')

url에는 위와 같이 경로를 추가해주었다. 그리고 아직 글쓰기 기능이 없어 admin에서 데이터를 생성해서 잘 되는지 확인해보았다.

이게 게시판까지 만들었으니 다음 글에서는 글쓰기 기능을 구현해보겠다.

728x90