Python 61

파이썬에서 @(골뱅이, 데코레이터라고 불림)이란? 사용방법과 예제

파이썬 @ (Decorator) 사용예제와 방법 #골뱅이 마크 사용 예시 @wraps(f) @app.route @login_required @templated() Python flask를 사용하다 보면 위 코드와 같이 Decorator로 이루어진 구문이 있는데 동작 방식은 알지만 실제 "at" 기호가 앞에 붙을때 어떻게 움직이는지는 잘 몰라 조사하게 되었다. def a_func(b_func): print("a_func") def c_func(): print("b_func") b_func() return c_func @a_func def d_func(): print("d_func") print("############") d_func() >>결과 a_func ############ b_func d_func..

파이썬 함수 안에 중첩(nested)해서 함수 넣기

함수 안에 함수 중첩해서 넣기 예제와 특징 예제1 코드>> def a_func(): def b_func(): print("it's b_func") print("it's a_func") b_func() a_func() # b_func() #주석처리 결과>> it's a_func it's b_func 예제1 코드 주석>> 위 코드 예제는 a_func 함수 안에 b_func 함수를 넣어서 실행하고 있다. a_func()에 의해 함수가 실행되었다고 생각하자. 그러면 해당함수는 컴퓨터 메모리의 스택(Stack)이라는 공간에 저장되어 실행 된다. 스택의 a_func 함수 시작점 주소부터 코드가 진행되는데 그 내부에서 b_func 함수도 선언된다. 그리고 print("it's a_func") 가 실행되고 b_func..

파이썬(Python) 속성 중 __name__ 이란?

__name__ 이란? 파이썬 코드 예제를 살펴 보면 아래와 같은 코드를 종종 볼수 있다. if __name__ == '__main__': 간단히 설명하면 __name__은 파이썬에 들어가 있는 기본 속성으로 해당 모듈의 위치를 알려 준다. 참고로 파이썬의 기본 속성은 아래와 같이 확인할 수 있다. print(dir()) # 결과 ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__'] name은 실행이 발생하는 위치인데 아래 예제를 통해 이해해보겠다. __name__ 예제 print(__name__) 위 코드처럼 test1.py 파일에 ..

flask 기본 예제 실행이 안될 때 (에러메세지도 안뜨는 경우)

flask.palletsprojects.com/en/1.1.x/quickstart/#a-minimal-application Quickstart — Flask Documentation (1.1.x) For web applications it’s crucial to react to the data a client sends to the server. In Flask this information is provided by the global request object. If you have some experience with Python you might be wondering how that object can be global and how flask.palletsprojects.com 위 링크의 기본..

파이썬(Python) Selenium Click() 동작이 안될 때

예약 사이트를 자동화로 만드는 과정에서 몇 몇 버튼이나 a, href 링크들이 클릭이 안되는 경우들이 종종 있었다. element click intercepted ElementClickInterceptedException is not clickable at point 위 와 같은 메세지가 발생하거나 다운이되는 현상들이 있었다. 내가 예약사이트 자동화중에 만난 경우들을 아래와 같이 정리하고 해결 했던 방법도 정리해 보았다. Case 1 그림1과 같이 화면의 아래 김해CC를 클릭하고 날짜를 클릭 후에 예약하기 버튼을 눌러야 하여서 아래와 같이 코드를 짰다. kimhae_check = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((B..

블로그만들기(4) - 웹에디터 글쓰기 html 부트스트랩과 css로 꾸미기

블로그 만들기(3)에서 만들었던 내용에서 bulletin_wr.html을 bootstrap과 css 를 사용해서 이쁘게 꾸미려고 한다. 우선 bootstrap과 css를 전문적으로 배운적이 없기 때문에 인터넷 검색을 통해서 작성했으니 감안하고 확인하길 바란다. 이전에 꾸미지 않은 상태의 화면은 블로그 만들기(3)에서 확인하길 바란다. 그리고 코드를 수정해서 아래와 같이 변경하였다. 변경후 bulletin_wr.html>> 결과 화면에 대한 주석>> 결과 화면에서 Home 과 search 부분은 파이썬에서 구현 된 것은 없다. HTML에 미리 만들어 놓고 나중에 파이썬과 연결할 생각이다. 제목 부분은 input으로 받고 내용은 summernote를 적용하였다. 코드 bulletin_wr.html>> Hom..

블로그만들기(2) - 게시판 작성한 글 확인하기(파이썬)

블로그만들기(1)에서 게시판 글쓰는 환경을 구축하였다. 이제 글쓰면 바로 글 내용을 확인할 수있는 게시판 읽기 기능을 만들 것이다. 동작원리는 아래와 같다. 1. 게시물 쓰기가 완료 되면 해당 게시물을 읽는 페이지로 HTTP GET 요청을 보낸다. 2. 요청과 함께 db 인덱스 번호인 _id 값을 GET 신호와 같이 보낸다. 3. _id 값으로 db에 접근해서 읽고 html로 출력해준다. 코드 - bulletin_wr.html >> {{db_data.title}} {{db_data.pubdate}} {{db_data.contents}} 주석>> bulletin_rd 주소로 HTTP GET 요청을 받으면 flask를 통해 db_data를 전달 받고 받은 값을 html로 보여준다. 코드 - board_01...

파이썬 Flask 기능 정리 - render_template, jinja2

참조 링크 (link)>> flask.palletsprojects.com/en/1.1.x/quickstart/ Python flask에서 HTML과 변수 주고 받기 파이썬에서 HTML을 만들고 변경하는 것은 쉬운 작업이 아니다. application 보안을 위해 동적으로 바뀌는 값을 escape 처리 해서 작성해야하기 때문이다. Flask에서 jinja2 엔진을 공급한다. 간단하게 render_template 함수로 html 에 접근하면서 원하는 변수도 같이 보내 줄 수 있다. html 문서에서는 받은 변수 값을 {% %} {{ }} 괄호 안에서 사용 전자는 문법용이고 후자는 변수를 바로 사용할때 사용한다. 이렇게 사용이 가능하게 해주는 것을 jinja2 엔진이 가능하게 해주는 것이다. 아래 예제 코드를..

파이썬 Flask 기능 정리 - url_for, HTTP 요청(GET,POST,PUT,DELETE,OPTIONS)과 처리방법

참조 링크 (link)>> flask.palletsprojects.com/en/1.1.x/quickstart/ url_for 함수 url_for 함수는 url 주소값을 가져 온다. url_for( ) 괄호안에 route 함수 명을 넣으면 해당 route가 가지는 url 주소를 가져온다. 그리고 괄호에 다른 항목은 변수명이다. 변수 명을 넣으면 변수명을 포함한 주소값을 가져온다. 해당 내용은 아래 예제 코드를 통해 이해하는 것이 쉽다. 아래 코드에서 with 는 파일 같은 형식을 열때 사용한다. (파일은 with 로 열때 별도의 close 문을 사용하지 않아 편리하다. close 문에 __exit__으로 종료 한다. test_request_context 도 dir 로 읽어 보면 __exit__ 문이 있다 ..

파이썬 Flask 기능 정리 - route, 변수(variable)<괄호>로 보내기, url 표기 방법

참조 링크 (link)>> flask.palletsprojects.com/en/1.1.x/quickstart/ 1. Route 기능 라우트는 외부 웹브라우져에서 웹서버로 접근 시 해당 주소로 입력을 하게 되면 특정 함수가 실행되게 도와주는 기능을 한다. 아래 예제 코드는 /hello 라는 주소에 접근하면 return 으로 'Hello, World' 을 보낸다. 코드 >> from flask import * ######################################################### # Flask 선언 app = Flask(__name__, template_folder="templates") @app.route('/hello') def hello(): return 'Hello, ..