게시글, 댓글 DB는 분리해서 저장..!
댓글 CRUD
.venv 환경 설정하기
pip install flask
pip install flask_sqlalchemy
DB를 이용하기 위해서 우선 데이터베이스 프레임을 만들어줘야 한다.
class Comment(db.Model):
id = db.Column(db.Integer, primary_key=True) # 고유 id는 필수
username = db.Column(db.String, nullable=False)
contents = db.Column(db.String, nullable=False) # 각 컬럼 지정
def __repr__(self): # 데이터 표시해줌
return f'{self.username}: {self.contents}'
with app.app_context():
db.create_all() # 데이터베이스 프레임 생성
# 이후 페이지에 표시될 요소들을 정해줌
@app.route('/')
def home():
comment_list = Comment.query.all() # 데이터베이스에 저장된 데이터 모두 불러오기
return render_template('test.html', data = comment_list) # test.html을 템플릿으로 데이터 표시
@app.route('/test')
def write_comment(): # 댓글 작성 기능
# 데이터 받아오기
username_comment = request.args.get("username")
contents_comment = request.args.get("contents")
# 데이터 db에 저장
comment = Comment(username=username_comment, contents=contents_comment) # 받은 데이터를 데이터에 맞추어주기
db.session.add(comment) # db에 추가
db.session.commit() # db에 저장
return redirect(url_for('home')) # 저장 완료 후 돌아가기
## 수정 기능은 아직 구현 중 ##
@app.route('/test/delete', methods = ['POST'])
def delete_comment(): # 댓글 삭제 기능
contents = request.form.get('contents') # contents 를 불러온다
comment = Comment.query.filter_by(contents=contents).first() # 댓글 내용이 일치하는 댓글을 불러오기 시도
if comment: # 일치하는 댓글이 있으면
db.session.delete(comment) # 해당 댓글 삭제
db.session.commit() # 데이터베이스 현재 상태 저장
message = '댓글이 삭제되었습니다.'
return redirect(url_for('home', message = message)) # 돌아가기
if __name__ == "__main__":
app.run(debug=True)
현재 상태는 우선 대충 틀만 잡아놓았다. 모양은 백엔드 구현 후 수정할 것.
해결 못한 문제점