Web/Flask-python

    [flask] Jquery 이용한 Post 전송시 return 으로 페이지 받기 (render_template,redirect 등)

    가끔 jquery를 이용해 post 데이터를 전달 할 때 , flask 서버에서 페이지를 반환해줘야 하는 경우가 있다. $.ajax나 $.post등을 이용하는 경우에 페이지가 자동으로 전환되지 않음 따라서 success 조건에서 별도로 페이지를 새로고침 하거나 다른곳으로 연결해줘야함 이 경우 flask의 반환값이 필요한 경우에는 해당 반환을 무시하는 경우가 왕왕 생긴다. ex : flash 메시지 반환이 필요한 경우 flask에서 반환해준 flash 메시지는 세션에 저장되어 사용됨. 클라이언트 사이드의 자바스크립트는 세션에 접근할 수 없기 때문에 해당 값을 알 수 없음 따라서 페이지 자체를 새로 랜더하면서 세션에 접근하여 flash 메시지를 받아와야함. 그래서 보통 이런경우는 반환 메시지를 따로 보내고,..

    [flask] flask + jira API

    2종류가 있다. JIRA python library : https://github.com/pycontribs/jira atlassian-python-api : https://github.com/atlassian-api/atlassian-python-api 1번은 JIRA 만을 사용하기 위해 만들어진 라이브러리고, 2번은 atlassian 자체를 사용하면서 그 중에 JIRA API를 쓸 수 있다. 두 라이브러리 간 사용법 자체는 크게 차이가 없어보임. jira만 쓸꺼니까 일단 1번으로 해본다. JIRA 서버 연결 JIRA 서버를 새로 만들어서 연결하는게 아닌, 기존 서버에 연결해서 사용하는게 목적이다. from jira import JIRA jac = JIRA('',auth=('username','pass..

    [flask-python] Flask 서버 웹소켓, 웹페이지 요청 로그 비활성화 + logging

    socketio = SocketIO(logger=False,engineio_logger=False) 웹소켓 - logger, engineio_logger 모두 False 로 변경시 웹소켓 로그 꺼짐 import logging log = logging.getLogger('werkzeug') log.setLevel(logging.ERROR) app.run() 실행전에 log 변수에 대해 위와같이 설정하면 flask werkzeug wsgi 로그가 에러를 제외하고는 출력되지 않음. logging옵션은 CRITICAL,ERROR,WARNING,INFO,DEBUG 등이 있다. 플라스크의 경우 기본수준은 WARNING으로 되어있고, werkzeug는 INFO 레벨로 되어있는듯. CRITICAL ~ DEBUG 순서로..

    REST API 테스트 도구 - ARC

    rest API 테스트 도구 https://install.advancedrestclient.com/install Advanced REST Client install.advancedrestclient.com @bp.route('/addTaskAPI.wt',methods=['POST']) # @CheckLogin def post(): data = request.get_json() return jsonify(data) 그 다음, ARC에서 method와 header, body 세팅 후에 전송버튼 클릭하면 응답이 매우 잘 나옴. 위와 같은 형태로 JSON 형식 데이터를 주고받을 수 있다. 만약 파일 업로드 + 저장까지 포함한 기능을 구현하고 싶다면 @bp.route('/addTaskAPI.wt',methods=..

    웹소켓 in Flask

    웹소켓을 쓰는 상황? HTTP - 클라이언트 웹 브라우저 요청에 의해 서버가 응답하고, 이를 가지고 다시 클라이언트를 갱신 - 매 요청시마다 페이지 전체를 갱신하는 "동기적" 문제 발생. 즉, 통신할 때 마다 페이지 전체를 새로 랜더링해야하는것. AJAX - 동기적 문제 해결을 위해 클라이언트 XMLhttpRequest 객체의 요청에 의한 서버 응답을 받아 페이지를 갱신하지만, 페이지를 이동하거나 전체를 갱신하는것이 아닌 페이지의 일부를 구성하는 DOM을 갱신할 수 있게됨. 그러나 여전히 요청에 의해 서버의 응답을 받아 페이지를 갱신한다는 문제점은 여전함. 웹소켓을 이용하면 클라이언트의 별도 요청없이도 서버에서 보내는 데이터를 받아 페이지에 표현할 수 있음. 클라이언트의 요청 - 서버의 데이터 응답 의 ..

    flask에서 sql을 사용하는 방식

    flask에서 sql을 사용하는 방식 크게 두가지 정도 있는듯. query_engine에 포함시켜 쿼리를 날리고 결과를 받는 방식 정의된 model 자체를 받아 사용하는 방식 query_engine 방식 #query_engine.py def TaskQuery(): sql = "SELECT * FROM task_list" lresult = db.engine.execute(sql) return lresult ~~~ #task_view.py result = query_engine.TaskQuery() ~~~ return render_template('/task/taskOverView.html',data=result) query_engine에 사용할 쿼리문을 정의하여 sql 쿼리 실행 결과를 받아와 사용하는 방..

    Flask에서 MD 문서 랜더링 + 디렉토리 하위경로 dict로 파싱해서 Jinja에서 출력하기

    디렉토리 하위 경로를 dict 형태로 파싱하기 최종 목표 : md 문서가 있는 디렉토리 경로를 읽어와 웹페이지에서 마크다운 문서를 랜더하는것. 디렉토리 받아서 하위 경로 DICT + list 형태로 자동 파싱해주는 코드 만들기 def readdir(dir): tdir = {} ret = {} tdir['dir'] = [] for file,key in dir.items() : if key == None : tdir['dir'].append(file) else : ret = readdir(key) ret['fname'] = file tdir['dir'].append(ret) return tdir def dirparser(rootdir): dir = {} res = os.walk(rootdir) rootdir..