Django 로 게시판 만들기(21). 게시판 보완하기

.·2020년 7월 28일
0

게시판만들기

목록 보기
21/21

게시판을 대략적으로 만들었는데 보완해야할 사항들이 필요하다.

  • 먼저 홈 ('/') 루트 디렉토리로 이동했을 때의 화면을 개선해야 한다.
  • 로그인 페이지에 회원가입 버튼 만들기
  • 대부분의 주소들이 링크가 걸려 있지 않다.
  • 로그인을 한 상태에서 로그인 페이지에 접근하면 홈으로 리다이렉트 시켜준다거나.

1. root ('/'), home 의 디자인

login.html 을 복사해서 같은 경로에 home.html 을 만들고 내부에 로그인에 적용한 폼 들을 지운 뒤 로그인과 회원가입 버튼을 각각 컬럼을 나누어 만든다.

row 를 하나 더 만들어서 그 안에 게시물보기 버튼을 만들었다.

2. member/view, home() 함수 변경

기존 코드를 지우고 아래와 같이 변경한다.

def home(request):
    return render(request, 'home.html')

세션의 키값을 가져오고 정보 유무에 따라 분기하는 코드는 html 에 입력할 것이다.

3. home.html, button 에 onclick 속성으로 링크 걸기

home.html 의 각 버튼마다 크기가 달라서 속성에 btn-blcok 을 넣었다.
사실 보여지는 모양은 내 마음대로 할 수 있는데, 이것도 마음에 들게 만지려고 들다 보면 한도 끝도 없어진다.

여튼 버튼을 home.html 에 3개가 있다.
이제 이 버튼을 눌렀을 때 각 기능에 맞는 엔드포인트로 이동해야 한다.
button 속성에 onclick 을 이용해서 경로를 입력해 준다.

<div class="row mt-2">
  <div class="col-12">
    <button type="button" class="btn btn-secondary btn-lg btn-block" 
    onclick="location.href='/member/register/'"">
      SignUp
    </button>
  </div>
</div>

4. home.html, 로그인 유무에 따라 바뀌는 버튼의 존재

로그인을 하지 않았을 때의 root directory 에서 보여주는 home.html 은 회원가입 버튼과 로그인 버튼이 보여야 겠지만 ( + 게시판보기 버튼은 보여지면 안되게 했다 - 로그인했을 때 보여지게 했음 ), 로그인을 한 상태라면 굳이 거기서 회원가입과 로그인 버튼을 보여지게 할 필요가 없다.

이 상황에서는 게시판 보기 버튼과 로그아웃 버튼이 보여지는 것이 적절하다.

view 에서 home 함수는 렌더 역할만 리턴하게 한 뒤 home.html 에 if 를 써서 세션이 있으면 로그아웃과 게시판보기 버튼을 보이게 만들고, 아니면 회원가입과 로그인 버튼이 보이도록 했다.

{% extends "base.html" %}

{% block content %}
<div class="row mt-5">
  <div class="col-12 text-center">
    <h1>
      My Private Board
    </h1>
  </div>
</div>
{% if request.session.user %}
<div class="row mt-5">
  <div class="col-12">
    <button type="button" class="btn btn-info btn-lg btn-block" onclick="location.href='/board/list/'">
      Go to Board
    </button>
  </div>
</div>
<div class="row mt-2">
  <div class="col-12">
    <button
      type="button"
      class="btn btn-primary btn-lg btn-block"
      onclick="location.href='/member/logout/'"
    >
      Logout
    </button>
  </div>
</div>
{% else %}
<div class="row mt-5">
  <div class="col-12">
    <button
      type="button"
      class="btn btn-primary btn-lg btn-block"
      onclick="location.href='/member/login/'"
    >
      SignIn
    </button>
  </div>
</div>
<div class="row mt-2">
  <div class="col-12">
    <button type="button" class="btn btn-secondary btn-lg btn-block" onclick="location.href='/member/register/'"">
      SignUp
    </button>
  </div>
</div>
{% endif %}
{% endblock %}

5. 다른 html 파일에 있는 버튼의 경로 수정 및 새 버튼 추가하기

button 태그에6-게시글-리스트에서-누르면-상세보기로-게시글을-볼-수-있게-하기">6. 게시글 리스트에서 누르면 상세보기로 게시글을 볼 수 있게 하기

board_list.html 에 있는 tr 태그에 onclick 을 건다.

    <tbody>
        {% for board in boards %}
        <tr onclick="location.href='/board/detail/{{ board.id }}/'">
          <th scope="row">{{ board.id }}</th>
          <td>{{ board.title }}</td>
          <td>{{ board.writer }}</td>
          <td>{{ board.created_at }}</td>
          <td>{{ board.updated_at }}</td>
        </tr>
        {% endfor %}
      </tbody>

7. 기타

고치려면 한도 끝도 없는거 같다. 기존에는 회원가입을 성공하면 그대로 회원가입 페이지에 머물러 있는데 로그인 페이지로 리다이렉트 하거나, 로그아웃 버튼을 넣거나 뒤로가기 버튼을 넣어봤다.

여기에 제일 하고 싶은 거는 게시물 수정과 삭제 기능을 만들어 보고 싶다.

profile
.

0개의 댓글