TIL 내일배움캠프-AI 2일차

박지홍·2023년 3월 14일
0

ajax에는 비동기화 전송방식을 통한 전송을 위해서는 별도로 지정해줘야된다
값은 인자에 async를 false 값으로 지정해주면 비동기화 전송방식이되어
데이터베이스에서 값을 전달 받은 이후에 동작하게 할 수 있다.

팀원간 서로 코드리뷰를 통한 피드백을 해주었다.

피드백 1. nav.html 에 콘텐츠 부분은 index에서 작성되야 맞는것 같습니다 [메인 콘텐츠부분]
템플릿화는 해당 파일이 순수 자기 기능을 나누는 부분이라 페이지마다 바뀔 메인부분은 각 페이지에서 작성되는게 맞을것 같습니다.

해당이유로 이부분이 index로 가고 base 부분의 nav.html을 불러오는 하단분에 {% block contents %} 가 들어오면 좋을꺼같습니다.

해당 기능을 옮겨서 설정한 그리드 구역이 깨지는것은  메인부분을 index로 옮기고 na.html의 마지막 </div> 구역을 닫는 부분을 하나 삭제한 후 
base.html의 {% block contents %} {% endblock %} 이후로 옮겨주면 정상 작동합니다.

피드백 2. 위 내용과 동일 한내용으로 {% %} 형식의 템플릿 상속은 다른 페이지에서 실질적인 구현을 돕기 위한부분으로
해당 페이지 내에서 모든 내용이 처리가 될것이라면 굳이 login이나 category부분에 블록기능을 넣을 필요가 있을까 싶습니다.

추가적으로

데이터베이스에 데이터를 저장하는 부분과 수정하는 부분을 추가하였고 해당 부분은

namelist = list(db.test1.find({'name':name},{'_id':False}))
if not len(namelist):
db.test1.insert_one(doc)

else:
    db.test1.update_one({'name':name},{"$set":doc})

다음 구문으로 데이터베이스에 찾는 데이터가 이미 존재한 상태로 호출이되면 업데이트로 판단을 하게 하였다.

또한 스크립트를 분리함으로 인해
해당 페이지의 변수를 읽어올수 없게되어
window.document.getElementById 기능을 사용하여 ID조회를 통하여 데이터를 가져오게끔 수정하였다.

추가적으로 이미지의 저장을 구현하려고 시도햇는데
찾아본 결과 DB자체에는 이미지를 올려서는 안되고 DB는 이미지에 대한 경로값을 저장하고
이미지는 서버단에 저장하여 db에서 해당 이미지의 주소를 찾아와 서버에있는 경로에 접속하여 불러오는 식으로 작성을 해야 한다고 판단햇다.

해당 방식을 통해 자체적인 코드로 작성을 시도하던중 동작이 이상하여 로그를 찍어보니
경로값에 fakepath가 들어온 상태로 변경되어있었다.
해당 값이 발생하는 이유는 보안상 이유라고 하는데 자체적 해결방법은 찾지못했다.
대신 pop과 split을 이용하여 파일의 이름만 추출하였다.

찾아본 결과 이미지 파일을 저장하고 경로만 db로 저장하는 것을 성공햇다.
단, 따로 따로 하는 방법은 성공햇지만 합치는 방법에서 해매게 되었다.

이미지는 form 형식에서 암호화하여 바로 저장하는 app단의 함수를 호출하여 사용이 가능햇으나
기존에 존재하던 다른 데이터와 합치기 위해서는 저 방법이 불가능하여 고민하고 있었으나

ajax에서 암호화 전송이 별도로 하는 방법을 찾았다.
그로인해 내일 아래의 방법을 시도해볼 예정이다.
생각난 방법으로는 파일의 경로만 db에 먼저 저장한 후 성공하면 나오는 호출부에서 암호화 전송을 하는
함수를 호출하여 파일을 재전송해볼 예정이다.

2번째 방법으로는
파일을 입력받는곳에 를 통해 해당 값의 변동이 생기면
함수를 호출하게하여 값을 지니고 있다가 데이터의 전송이 이루어 질때 저장을 하는 방식으로 진행을 해볼 예정이다.

0개의 댓글