본문 바로가기

verdantjuly/Today I Learned

TIL 20230508

728x90

오늘 한 것

웹개발 종합반 3주차

팀 프로젝트 : API 작성, 글 삭제하기 코드 작성

 


0. 팀 프로젝트 [무비스코어]

 

나의 역할

- 삭제 기능

- 더미데이터 10개 작성 

 

진행 상황

[무비스코어] S.A. 

https://recondite-practice-c33.notion.site/2-A-S-A-6fcf1a476184438e902f10f557b6e4ca

무비스코어

  • 팀과제 소개
    • 영화의 후기를 작성하고 공유하는 서비스
  • 개발 및 결합 과정에 대한 방법 논의
    • 각자가 작성한 코드를 슬렉을 통해 팀장에게 전달하면, 팀장은 전달받은 코드를 결합하여 하나의 결과물로 만듭니다

와이어 프레임

 

기능

  1. 글쓰기 기능 : 유저는 다른 사람에게 공유하고싶은 영화를 등록할 수 있습니다.
  2. 읽기 기능 : 유저가 등록한 영화의 목록을 보여줄 수 있습니다.
  3. 수정 : 유저가 등록한 영화에 대한 내용을 수정할 수 있습니다.
  4. 삭제 : 유저는 자신이 등록한 영화 게시물을 삭제할 수 있습니다.

API

기능 Method URL 받을 정보 보낼 정보
글 저장하기 POST /save 게시글 ID, 영화 제목, 설명, 별점
닉네임, 리뷰, 비밀번호
저장 성공/실패 여부
글 불러오기 GET /get-list - 게시글 목록
글 삭제하기 POST /del 게시글 ID, 비밀번호 삭제 성공/실패 여부, 비밀번호 t/f
글 수정하기 POST /update 게시글 ID, 영화 제목, 설명, 별점
닉네임, 리뷰, 비밀번호
저장 성공/실패 여부

 

규칙

성공은 1

실패는 0

return

 

글 삭제하기 코드

- 시도

#레이아웃

@app.route(“/del”, methods=[“POST”])
def movie_del():
  If 비밀번호 === 입력된 비밀번호,
    db.movies.delete_one({‘게시글ID’:’클릭한게시글ID’})
    return 1
  else return 0
#시도2 
@app.route(“/del”, methods=[“POST”])
def movie_del():
  password_receive = request.form[‘password_give’]
  _id_receive = request.form[‘_id_give’]
  If password_receive === true,
      db.movies.delete_one({password:password_receive},{_id:_id_receive})
      return 1
   else return 0

- 문제

자료를 find 로 빼 와야 하는데 안에 있는 걸 꺼내는 방법을 까먹음

- 해결

조원께서 find를 사용해서 변수를 지정하면 되고 . 또는 [ ]를 이용해서 자료를 빼 오는 방법을 알려 주심

# 완성 코드
@app.route("/del", methods=["POST"])
def movie_del():
    password_receive = request.form['password_give']
    id_receive = request.form['id_give']

    find = db.movies.findOne({_id: id_receive})

    if find['password'] == password_receive
        db.movies.delete_one({password:password_receive},{_id:id_receive})
        return 1
    else return 0

- 알게 된 것

안에 있는 데이터는 [ ] 또는 . 으로 불러온다.

 

find['password'] 와 find.password 의 차이

: 기능은 같으나 키값에 특수문자가 들어가면 맞는 걸로 이용한다.

 

 

알게 된 것

 

API 에서의 url 은 

@app.route('/')

@app.route('/test', methods=['GET'])

여기에서 /뒤의 것들을 의미한다.

 

S.A.

Starting Assignments 기획안

 

와이어 프레임

그림 개요

 

파싱(parsing)

: 데이터를 분해 분석하여 원하는 형태로 조립하고 다시 빼내는 프로그램

= 웹상에서 주어진 정보를 내가 원하는 형태로 가공하여 서버에서 불러들이는 것

참고자료: http://wiki.hash.kr/index.php/%ED%8C%8C%EC%8B%B1

 

 

 

소감

첫 미니 프로젝트에 도전한다. 협업하는 일이 처음이기도 하고 프로젝트 자체가 처음이어서 떨린다.

조원들의 도움을 많이 받았고 앞으로도 많이 받을 것 같다. 

질문이 생기면 슬랙 그룹 DM에 보내는데 다들 대답을 잘 해 준다. 

내 역할을 잘 해낼 수 있으면 좋겠다. 파이팅.

 


 

 

1. certifi 에러

문제

mongodb 에서 users 가 생성되지 않음

from pymongo import MongoClient
client = MongoClient('mongoDB 주소입력')
db = client.dbsparta

doc = {
    'name' : '영수',
    'age' : 24
}

db.users.insert_one(doc)

시도

1. certifi 패키지를 설치 : 터미널에 pip install certifi 입력

2.

import certifi


ca = certifi.where()

위 소스 코드를 파이썬 코드 상단에 입력

 

3. MongoDB 주소 뒤에     , tlsCAFile=ca    입력

 

참고 자료 : (바로가기)

 

해결

from pymongo import MongoClient
import certifi

ca = certifi.where()
client = MongoClient('mongoDB 주소', tlsCAFile=ca)
db = client.dbsparta

doc = {
    'name' : '영수',
    'age' : 24
}

db.users.insert_one(doc)

알게된 것

certifi 패키지 설치 및 사용법

1. certifi 패키지를 설치 : 터미널에 pip install certifi 입력

2.

import certifi


ca = certifi.where()

위 소스 코드를 파이썬 코드 상단에 입력

 

3. MongoDB 주소 뒤에     , tlsCAFile=ca    입력

 

2. pymongo 코드 요약

# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})

# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))

# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

# 지우기 - 예시
db.users.delete_one({'name':'bobby'})

 

3. bs4

 

알게 된 것

사용 예시 :

import requests
from bs4 import BeautifulSoup

URL = "https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20230101]"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(URL, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')

list = soup.select('#body-content > div.newest-list > div > table > tbody > tr')

for li in list : 

    title = li.select_one('td.info > a.title.ellipsis').text.strip()
    artist = li.select_one('td.info > a.artist.ellipsis').text.strip()
    rank = li.select_one('td.number').text[0:2].strip()

    print(rank, title,' - ', artist)

 

4. reduce 함수의 사용법

알게 된 점

참고자료 : https://developer-talk.tistory.com/146

arr.reduce(callback(accumulator, currentValue, index, array), initialValue)

arr

- 순회하고자 하는 배열

 

accumulator

- 누적되는 값

- callback 함수의 반환값을 누적

- initialValue를 설정한 경우 callback의 최초 호출시 initialValue로 값으로 초기화

- initialValue가 없을 경우 arr의 0번째 인덱스 값으로 초기화

 

currentValue

- 현재 배열의 요소

 

index(생략 가능)

- 현재 배열 요소의 index

 

array(생략 가능)

- reduce 함수를 호출한 배열

 

initialValue(생략 가능)

- callback의 최초 호출시 accumulator 초기값

 


정리 

 

certifi 패키지 설치 및 사용법

1. certifi 패키지를 설치 : 터미널에 pip install certifi 입력

2.

import certifi


ca = certifi.where()

위 소스 코드를 파이썬 코드 상단에 입력

 

3. MongoDB 주소 뒤에     , tlsCAFile=ca    입력

 

 

pymongo 코드 요약

# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})

# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))

# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

# 지우기 - 예시
db.users.delete_one({'name':'bobby'})

 

API 에서의 url 은 

@app.route('/')

@app.route('/test', methods=['GET'])

여기에서 /뒤의 것들을 의미한다.

 

S.A.

Starting Assignments 기획안

 

와이어 프레임

그림 개요

 

파싱(parsing)

: 데이터를 분해 분석하여 원하는 형태로 조립하고 다시 빼내는 프로그램

= 웹상에서 주어진 정보를 내가 원하는 형태로 가공하여 서버에서 불러들이는 것

참고자료: http://wiki.hash.kr/index.php/%ED%8C%8C%EC%8B%B1

 

find['password'] 와 find.password 의 차이

: 기능은 같으나 키값에 특수문자가 들어가면 맞는 걸로 이용한다.

 

 

reduce 함수의 사용법

참고자료 : https://developer-talk.tistory.com/146

 

arr.reduce(callback(accumulator, currentValue, index, array), initialValue)

arr

- 순회하고자 하는 배열

 

accumulator

- 누적되는 값

- callback 함수의 반환값을 누적

- initialValue를 설정한 경우 callback의 최초 호출시 initialValue로 값으로 초기화

- initialValue가 없을 경우 arr의 0번째 인덱스 값으로 초기화

 

currentValue

- 현재 배열의 요소

 

index(생략 가능)

- 현재 배열 요소의 index

 

array(생략 가능)

- reduce 함수를 호출한 배열

 

initialValue(생략 가능)

- callback의 최초 호출시 accumulator 초기값

 

소감

팀 프로젝트를 잘 할 수 있도록 혼자 공부하는 시간에 준비를 잘 해 봐야겠다. 파이팅!

 

 

'verdantjuly > Today I Learned' 카테고리의 다른 글

TIL 20230510  (1) 2023.05.10
TIL 20230509  (1) 2023.05.09
TIL 20230506  (1) 2023.05.06
TIL 20230505  (1) 2023.05.05
TIL 20230504  (1) 2023.05.04