인프런 커뮤니티 질문&답변

nicolas83님의 프로필 이미지
nicolas83

작성한 질문수

남박사의 파이썬으로 실전 웹사이트 만들기

댓글 저장문제

작성

·

251

1

겨우 에러 없에고 저장해놨던 파이로로 다시 해보고 있는데

전과 같은 댓글이 잘 작성이 되긴 하는데 

Robo T3 에 board, members 외에 comment 라는 것이 생성되고 그안에 댓글들이 저장되고 있습니다.

우선 반복적으로 해봐서 보안강화 를 무사히 끝네고 

Ajax 이전에 있는 댓글기능 구현에서 문제가 생기는건 확인하였습니다.

그리고 확실치는 않지만 여러번 해본결과 board.py 에서 댓글기능 하면서

comment_write 함수 안에서 문제가 생긴게 아닌가 추측되는거 까진 해보았으나 

확실하지는 않습니다. 분명 동영상 내용과 제가 coding 한게 동일하다 생각되어

동영상 사진과 제가 coding 한 사진 그리고 T3 사진을 올립니다.

upload 한 사진에서 문제점이 보이신다면 그 네용과

해결할수 있는 방법과 실제 그럼 어디에 댓글이 저장되어야 하는지 알았으면 합니다.

동영상 강의 사진

coding 한 사진

T3 사진

답변 1

0

남박사님의 프로필 이미지
남박사
지식공유자

올려주신 이미지는 별 문제가 없어보입니다만... 

실제 코딩을을 하다보면 별의별 문제가 생기는 경우가 많습니다. 이런 경우 어떻게 이 문제를 해결해야하는지 스스로의 노하우를 만들어놔야 차후에 이런 다양한 문제를 해결 하실 수 있습니다. 보통 이런 과정을 디버깅 한다고 표현하기도 합니다.

파이썬에서 가장 흔하게 사용되는 디버깅 방식은 vs 코드의 디버깅 툴을 활용하는 방식이 있고 더 쉬운 방식으론 print() 문을 적극 활용하여 의심가는 구문에 print() 문을 출력하여 데이터가 제대로 넘어오는지 확인하는 방식입니다. 코드 어디까지 정상적으로 동작하는지도 확인하고 데이터가 제대로 넘어오는지도 확인할 수 있습니다.

웹의 기능은 결론적으로 데이터를 받아서 데이터베이스에 넣는게 전부입니다. 그럼 먼저 데이터가 제대로 넘어오는지 print 해보시고 넘어오는 데이터에 문제가 없다면 정상적으로 해당 db와 연결되었는지 그리고 제대로 insert 되는지 확인을 해보셔야 합니다. 중요한건 딱 이 2가지 입니다. 

@blueprint.route("/comment_write", methods=["POST"])
@login_required
def comment_write():
    if request.method = "POST":
        print("POST OK")
        name = session.get("name")
        writer_id = session.get("id")
        root_idx = request.form.get("root_idx")
        comment = request.form.get("comment")
        current_utc_time = round(datetime.utcnow().timestamp() * 1000)
        c_comment = mongo.db.comment
        post = {
            "root_idx": str(root_idx),
            "writer_id": writer_id,
            "name": name,
            "comment": comment,
            "pubdate": current_utc_time
        }

        print(post)

        c_comment.insert_one(post)
        return redirect(url_for("board.board_view", idx=root_idx))


@blueprint.route("/comment_write", methods=["POST"])
@login_required
def comment_write():
    if request.method = "POST":
        print("POST OK")
        current_utc_time = round(datetime.utcnow().timestamp() * 1000)
        post = {
            "root_idx": "aaaaaaa",
            "writer_id": "debug",
            "name": "디버깅",
            "comment": "디버깅 테스트",
            "pubdate": current_utc_time
        }
        print(post)
        c_comment.insert_one(post)
        return redirect(url_for("board.board_view", idx=root_idx))

위 처럼 디버깅을 해보시는게 좋을듯 합니다. 물론 위는 그냥 하나의 예시일 뿐입니다.

nicolas83님의 프로필 이미지
nicolas83

작성한 질문수

질문하기