web-add-clone-board-modify-del


title: Pet-Project-web-수정 및 삭제기능 추가
category: pet project
tags: pet project

date: 2021-06-09 4:55:01

개요

웹에 클론코딩 페이지를 추가하기까지의 정리

현황

게시글 수정 및 게시글 삭제를 추가하였다.

게시글 수정,삭제 버튼

[글쓰기 버튼 추가 및 작성일시 추가]
게시글 수정 화면
[글쓰기 눌렀을 때 화면]

소스 코드 수정 현황

  1. clone_board.py
  2. board_add.html
  3. board_content.html

clone_board.py 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@clone_board_bp.route('/del/<int:board_content_idx>/')
def delContent(board_content_idx):
db = Database()
db.execute("""DELETE FROM board_content_table WHERE board_content_idx = %s""" %str(board_content_idx))
db.commit()
return redirect(url_for("clone_board.list"))


@clone_board_bp.route('/modify/<int:board_content_idx>/',methods=['POST','GET'])
def modify(board_content_idx):
db = Database()
data = db.executeAll("""SELECT * FROM board_content_table WHERE board_content_idx = %s""" %str(board_content_idx))

if request.method == 'POST':
form = ContentAddForm()
if form.validate_on_submit():
db.execute("""UPDATE board_content_table SET write_time='%s',board_content_title='%s',board_content='%s' WHERE board_content_idx = '%s'""" % (datetime.now(),form.content_title.data,form.content_text.data,str(data[0]['board_content_idx']) ))
db.commit()
return redirect(url_for('clone_board.content',board_content_idx=board_content_idx))
else:
form = ContentAddForm(content_title=data[0]['board_content_title'],content_text=data[0]['board_content'])
return render_template('/main/board_add.html',form=form,board_content_idx=board_content_idx)


clone_board.py 설명

  • 일부 생략된 코드임을 유의
  • 삭제 버튼을 누르면 DB에서 삭제
  • 수정 버튼을 누르면 수정창(게시글 작성 재활용)을 띄워줌
  • 수정창에서 등록을 눌렀다면(request = POST인 경우) db에 업데이트 해주고 수정된 내용을 보여줌

board_add.html 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
생략
<div class="container my-3">
<form method="post" class="post-form">
{{ form.csrf_token }}
{% include "checklist_form_errors.html" %}
Title:&nbsp
<input type="content_title" class="form-control" name="content_title" id="content_title" value={{ form.data.content_title or ''}}>

<form action="{{ url_for('clone_board.list',board_content_idx=board_content_idx) if form.data.content_text else url_for('clone_board.list') }}" method="post">

<label for="content_text" style="font-size:16px;">Content:</label>
<textarea name="content_text" id="content_text" rows="15">{{form.data.content_text or ''}}</textarea>
<input type="submit" style="font-size:16px;" value="등록">

</form>
</form>

생략

board_add.html 설명

  1. 조건문으로 수정모드일때와 글작성 모드를 forms의 값 유무로 판단하여 버튼을 눌렀을 때 연결할 url을 설정해줌

board_content.html 코드

1
2
3
4
5
6
7
8
9
10
<div class="btns">   
<div class="modify">
<a href="{{ url_for('clone_board.modify',board_content_idx=content[0]['board_content_idx'])}}"
class="button">수정</a>
</div>
<div class="delete">
<a href="{{ url_for('clone_board.delContent',board_content_idx=content[0]['board_content_idx']) }}"
class="button"> 삭제 </a>
</div>
</div>

board_content_html 설명

  1. 수정,삭제버튼 추가

향후 목표

  1. 기능 손보기
    1. 부트스트랩 변경(디자인 수정)
  2. 글 수정기능
    1. 패스워드 기능 추가
  3. 글 삭제
    1. 패스워드 기능 추가
  4. 사진 업로드 기능(글쓰기)
  5. 작성자 이름 추가(닉네임)
  6. 글 댓글 기능 추가
    1. 댓글 작성자 이름
    2. 댓글 패스워드
    3. 댓글 수정, 삭제