삽질-에러-아놔/파이썬 공부 삽질 기록

점프 투 플라스크 학습 및 중단

에혀 2021. 5. 21.

파이썬 기초 책을 여러권 해본 후, 중급을 목표로 웹프레임워크를 배워보기로 했다.

장고가 대표적이지만, 플라스크도 간단히 배워보는게 좋다는 의견들을 본 후,

입문자도 2주만에 게시판을 만들 수 있다는 카피를 보고,

그럼 난 일주일 안에 끝내야지라는 .... 야심찬 생각으로 온라인에 있지만, 책도 구입했다.

 

간단한 플라스크 예제는 헤드퍼스트에서 해봤고, 공부하면서 관련 간단 플라스크 유튜브 영상도 몇 개 봤었다.

 

윈도우 환경과 cmd, 파이참을 기본으로 진행한다.

( 맥터미널과 vs코드를 썼었는데, 그냥 책대로 그대로 따라하면서, 최대한 빠르게 1독을 하고,

2독, 3독 을 계획했다.

 

플라스크 기초 부분

맛보기 책들이나 플라스크가 쉽다는 것을 강조하기 위해,  부분의 예제는

application.py 나 app.py 를 만든 후, 파일 자체에서

app.run() 또는 app.run(debug=True) 등으로 시작했었는데, 다음과 같이... 전형적인 기초 코드

from flask import Flask, render_template

#전형적인 플라스크 기초 코드

app = Flask(__name__)

@app.route('/')
def hello():
	return render_template('hello.html')
    
if __name__ == '__main__':
	app.run(debug=True)

이 책에서는

함수가 아니라, 터미널에서 flask run 명령어로 실행한다.

app 객체가 전역으로 사용되면서, 순환참조 오류 발생 방지를 위해 블라블라....

 

@app.route('/') 를 체계적으로 관리하기 위해, blueprint 객체를 사용하고,

blueprint 와 맥도널트 세트격인 url_for() 함수를 사용한다.

 

이게 가장 핵심인 듯 하다.

 

그런데, 이 책에서는 이 개념 설명이 참으로 부족했다.

알고나면 별 내용 아닌데, 책이라는 매체 특징을 고려해야겠다.

(전작이자 베스트셀러인 <점프투파이썬> 은 한 줄 한 줄 기초 연습 코드 서적이니 주제가 다르다)

 

점프투플라스크나 점프투장고는 웹서비스를 만드는 기획하고 만드는 방법을 알려주는, 즉, 전체를 유기적으로 봐야하는 주제이며,

또한, 중요 함수에 대해서는 예제나 튜터리얼이 필요하다 생각했다.

 

보다가, 화가 났던 것.

책을 얇게 만들기 위해서 였겠지만,

소스를 수정한 곳을 <edit> 형식을 많이 취하는데, 책이라는 매체에서는 보는데 상당히 많이 불편했다.

변경 전/후 책을 앞뒤로 계속 넘겨봐야할 일이 많은데, 찾기가 매우 어려웠다. 그러다가 막 짜증이 나기 시작함 ㅠㅠ

( 위키독스의 구성과 깃허브에서 소스를 보는 형태가 나았으리라... )

책이라는 매체의 장점을 살리지 못한 점이 너무나 아쉽다. 웹에서는 어렵지만, 책에서는 편집의 방식으로 소스에 시각적인 표시로 설명을 잘 할 수 있었을텐데.... (거의 대 부분의 책이 그렇게 돼 있기도 하고)

 

url_for() 함수 부분에서 가장 짜증이 났었는데, 검색을 해봐도 이 함수를 잘 설명한 것을 찾기가 힘들었다.

url_for()

책에서 사용된 필수적인 방법이 여러가지였는데, 별도로 설명이 필요했던 부분 같다.

url_for 는 핵심적인 함수고, 사용법도 몇 가지 있고, 상이해서.. 정말 짜증이....

그냥 한 페이지 할애해서, 설명 했으면 얼마나 좋았을 까.

 

url_for() 의 가장 기초적이 사용방법은 @route 돼 있는 def <함수이름>을 쓰면, @route 의 주소를 사용한다는 것인데...

쉬운 이야기 같으면서도 사용용도에 따라, 엄청 헷갈리는 이야기였다.

 

1) url_for('hello') <=== 여기서 hello 가 뭐지?  라우팅된 함수명. 이렇게 말하면 멍때린다. -_-;;;
                                       hello 로 접속하면, 이 페이지가 뜨게했던 @route('home') 함수. 그리고, 그 함수 안에 있던 hello 를 가리킨다. 그 hello 를 써주면, url_for('hello') 는 /home 을 반환함.

 

@route('/home')

    def hello()

 

2) 블루프린트 객체를 생성할 때 사용했던 블루 프린트 객체 이름.함수이름

url_for('question.detail', 'question_id'=question_id)  <=== (1) ' 블루프린트객체 이름 . 라우팅된 함수명 ' , (2)라우트 함수에서 매게변수를 지정한 경우에는 매게변수

 

3) static 디렉토리 내, 파일의 url.

예시 : url_for('static', filename='style.css')

** 이 부분도 황당했다. url_for 의 또 다른 용도로 뜬금없이,나중에 '정적파일'을 찾아주는 용도도 있다고 한줄 표기. 하..... ㅠ

함수 설명이 없으니...나 원..

검색해봐도 url_for 의 여러 쓰임새를 매끄럽게 정리한 컨테츠는 찾기가 어려웠다.

 

혼자 엎드려서 정리 겸 글 작성중인데, 이 글을 누가 알아먹겠나.

 

이 책을 보는 시간과 에너지가 너무 아까워서, 소스만 복붙하고 중단하기로 했다. 뒷 내용들은 그냥 눈으로 봐도 될 듯했고, 이와 비슷한 삽질과 고통을 겪고 싶지 않았다.

플라스크를 메인이 아니라, 살짝 맛보려 한 것인데 이런 시간소모와 고통을 겪을까봐 넘 무섭다.

 

점프 투 장고도 같이 구입했는데, ㅠㅠㅠㅠㅠㅠ

 

안볼랜다.

 

다른 강의나 책 봐야겠다. 검색하면서 보니, 플라스크는 쓰는 사람도 너무 없기도 하다.

 

장고나 노드로 가야겠다. ( 어차피 장고를 했어도, 플라스크는 어떨까 하고 궁금해서 손대봤을 것이라고 위로 하며...그만 볼련다. )

 

강의를 듣고, 좋은 책을 보는 이유는 빠르고 명확하게, 잘 배우기 위함인데.... 하....정말 별것도 아닌 것에 내상이 크다.

결론 :

1. 역시 컴터 책은 두꺼운 것이 좋다

2. 가장 많이 하는 것으로 하자. 그래야 정보 찾기도 쉽다. ( 장고 또는 노드 )

 

 

 

댓글