미소를뿌리는감자의 코딩

[항해99 웹개발종합반] 3주차 본문

강의수강/[웹개발종합반]

[항해99 웹개발종합반] 3주차

미뿌감 2024. 1. 10. 18:47
728x90

3주차는 정말... 너무 힘들었다..ㅎ

강의 하나하나 에러가 발생해서

구글링 하느라 시간을 많이 썼다.

중간중간 에러를 어떻게 해결했는지도 적어보도록 하겠다.


우선 터미널 창은 CLI (command line) 라고도 부른다.

 

print(f"{age} years old")

라고 적기도 하는데 {}를 이용하여 변수 값을 프린트 하고자 할 때는

맨 앞에 f를 넣어서 작성해야 한다.


가상환경 -> '프로젝트 공구함' 같은 느낌이다.

집과 회사에서 다른 것들을 사용하다보면 맞지 않게 되는 경우가 발생하기 때문에 이를 방지하기 위해서 사용한다.

1. zsh:command not found: python

python을 찾지 못하는... 문제가 발생하였고, 이것저것 해결책을 찾아 시도하던 도중 다음과 같은 방법을 이용하니 해결되었다.

https://hackernoon.com/how-to-fix-zsh-command-not-found-python

 

How to Fix 'zsh: command not found: python' | HackerNoon

This can happen on any system but does occur slightly more commonly on macOS since they removed native python support in macOS 12.3.

hackernoon.com

정말... 감사했다..ㅠ Johnny씨... 당신이 절 구해줬어요...

 

2. 가상환경을 만들었지만 (.venv) 가 보이지 않았다.

이 문제는... 알고보니 macOS에서는 보이지 않기도 한다는 것을 알게 되었다..ㅎ..

계속 찾아보아도 문제가 해결이 되지 않았지만,, 이런 이유 떄문이었다.

 

3. flask를 다운 받았음에도 flask가 없다며, error를 내뱉었다.

여기에 1시간...이상을 썼지만,, 알고보니 다운이 잘 안되었던 거였다.

cmd창에서 다시 pip install flask를 하니 적용이 되었다..

굉장히... 허망했지만... 이런 것이 프로그래머의 숙명이니라 하고 있다.

 


웹 스크래핑: 인터넷에서 웹페이지의 정보를 수집하는 것

웹 스크래핑의 도구: BeautifulSoup, requests 가 있다.

 

선택자를 사용하는 방법으로 대표적으로 2가지가 있다.

1. soup.select()

2. soup.select_one()

# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')

soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')

# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')

# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')

 

contents는 리스트로 쪼개주기도 한다.

soup.select_one('.temperature_text > strong').contents

 


Flask를 활용한 웹 개발

- 사용자의 요청에 맞춰 HTML 파일을 응답해주는 FLASK 서버 -

 

로컬 개발환경 : client, server가 같은 환경일 때를 말한다.

 

flask의 폴더 구조는 다음과 같다.

flask
|--venv
|--app.py
|--templates
	|--index.html

기본적인 골격이니, 알아두는 것이 좋다.

 

flask 프레임워크: 서버를 구동시켜주는 편한 코드 모듬이다.


여기서 나를 시련에 빠트린 부분이 등장한다.

4. python app.py

가상 서버를 열기 위해, 다음과 같은 코드를 cmd에 입력 했어야 했다.

python app.py (x)

python3 app.py (o)

위에 코드가 실행이 안되어서 구글링으로 이것저것 찾아보다가

stackoverflow에서 python3 app.py를 시도해 보라는 글을 발견하게 되었고,

해당 방법으로 입력하니 드디어 실행되었다.

실행된 서버는 ctrl + c 로 나갈 수 있다.

이는 terminal이 실행 중일 때 중간에 나가고 싶을 때에도 사용 가능하다.

 

5. http error 403

처음에는, 서버가 잘 열렸었다. 하지만 코드를 변경하고 다시 실행을 시도하니

http error 403을 내뱉었다.

 

아래의 글에서 port를 변경해보라는 해결책을 알게되었고, 

이로 시도하니 해결되었다.

https://stackoverflow.com/questions/72795799/how-to-solve-403-error-with-flask-in-python

 

How to solve 403 error with Flask in Python?

I made a simple server using python flask in mac. Please find below the code. from flask import Flask app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def hello(): print("r...

stackoverflow.com

flask run --port 8000

을 시도하고 나니 해결되었다.

이를 마지막으로 더 이상의 error는 일어나지 않았고, 수월하게 강의를 수강했다.


return render_template('index.html', data = name)
#----------------------------------------------
context = {
	"name" : name,
    "lotto" : lotto,
}

return render_template('index.html', data = context)

html으로 값을 보내주기 위해 사용이 되는데, 이는 data라는 것을 index.html으로 넘겨줘서 HTML에서 

사용할 수 있도록 하는 것을 말한다.

 

밑에 방법은 data를 한 개가 아닌 여러 개를 보내고 싶을 떄 사용하는 방법이다.


flask에서 ffor로 flask for문을 작성할 수 있다.

 

<form action="{{url_for('movie')}}">
        <input type="text" name="query">
        <button type="submit">검색</button>
</form>

 

query 이름으로, action 부분에다가 값을 넘겨주는 것을 말한다.

이를  통해 movie.html에서 받은 값을 사용할 수 있다.


만약 복습을 할 기회가 있다면, 해당 부분을 제일 먼저 복습하고 싶을 정도로,

이번에는 새로운 개념들을 많이 배웠다.

진짜. 너무. 커엽다. 너.

 

728x90