오늘 한 것
웹개발 종합반 3주차
팀 프로젝트 : API 작성, 글 삭제하기 코드 작성
0. 팀 프로젝트 [무비스코어]
나의 역할
- 삭제 기능
- 더미데이터 10개 작성
진행 상황
[무비스코어] S.A.
https://recondite-practice-c33.notion.site/2-A-S-A-6fcf1a476184438e902f10f557b6e4ca
무비스코어
- 팀과제 소개
- 영화의 후기를 작성하고 공유하는 서비스
- 개발 및 결합 과정에 대한 방법 논의
- 각자가 작성한 코드를 슬렉을 통해 팀장에게 전달하면, 팀장은 전달받은 코드를 결합하여 하나의 결과물로 만듭니다
와이어 프레임
기능
- 글쓰기 기능 : 유저는 다른 사람에게 공유하고싶은 영화를 등록할 수 있습니다.
- 읽기 기능 : 유저가 등록한 영화의 목록을 보여줄 수 있습니다.
- 수정 : 유저가 등록한 영화에 대한 내용을 수정할 수 있습니다.
- 삭제 : 유저는 자신이 등록한 영화 게시물을 삭제할 수 있습니다.
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 |