Python Chatbot 4 일차
2018. 12. 20 (Thu)
Jinja의 기능을 사용한 웹 개발
flask를 사용하여 telegram에 메세지 전송
flaksk서버에서 다양한 어플리케이션을 제작
I. Jinja
python 기반 템플릿
html과 python 코드를 연결
(1) 기본 문법
(2) css 문법
text-align : 가로 정렬
margin : 세로 위치 지정
background-image: url(“url”) : 배경 사진 지정
II. form tag
html에서 사용자에게 자료를 입력받는 기능
(1) 기본 문법
form-tag : 사용자로 부터 값을 받아 보내준다
링크 처럼 사용 가능. 다른 앱으로도 날릴 수 있다
input type에 다양한 type이 들어갈 수 있다
input type=”submit” : 제출 버튼이 생성됨
input type=”text” : text type으로 받는다
input name = “name” : 받은 데이터에 이름을 지정 => action시 같이 보냄
form action = “url” : 받은 데이터를 url로 보냄
form target=”_blank” : 새탭에서 창을 연다
(2) request from flask
- .args.get(“파라미터 이름 = 보낸 박스의 이름”) : 보내진 파라미터를 가져온다
III. Telegram Chatbot
(1) 기본 원리
-
url을 사용하여 telegram에 접근
-
url을 통해 사용하고자 하는 기능을 선택하고 이를 python에서 requests.get()을 통해 사용
-
C9에서 telegram api로 보내지는 모든 url을 막아놓음
=> https://api.hphk.io/telegram/ 로 우회
(2) 기본 기능
-
getUpdates : 봇 상태 갱신
- 봇에 보내진 메세지와 id를 확인
-
getMe : 나에 대한 정보를 출력
-
sendMessage : 메세지를 전송
- chat_id= : 메세지를 받을 객체의 id
- text= : 전송되는 내용
IV. Python file 조작
영구적으로(손실 없이) 데이터를 저장할 때 사용
파일을 열 때 : open(‘파일명’, ‘r, w, a’, encoding=’utf-8’)
with open(...) as file:
...
으로 파일 조작 가능. 이후 자동으로 파일이 닫힘
(1) 데이터 저장 방법
- text : appending, 불러올 때 불편하고 느림
- 파일 열기(open), 읽기(read), 쓰기(write), 수정(append), 파일 닫기(close)
- .json (import json) => dictionary
- 읽기(Read), 쓰기(Write), 수정(Append)
- .csv : Comma Seperated Value (import cvs) : 엑셀과 유사, comma로 값을 구분 => 2-D list
- .tsv : Tab Seperated Value : import cvs만으로 사용 가능
- writer, reader에 delemeter=’\t’ 추가
- python 자체가 .csv를 2중 배열로 읽어 온다
- .tsv : Tab Seperated Value : import cvs만으로 사용 가능
- 읽기(Read), 쓰기(Write), 수정(Append)
- 한 행씩 수정 및 추가, 리스트 조작
- 기본 문법
- csv.writer(streamObject) : csv 조작 객체를 반환
- object.writerow([list]) : 배열로 데이터를 삽입
- DB
- DB열기(connect), 쓰기(read, retireve), 수정(update), 삭제(delete, dastroy), DB닫기(disconnect)
- dictionary(key-value) + 강력한 메소드 추가 = object => ORM
V. 기타 내용
(1) 언급된 기술들
- heroku
- pythonanywhere
- Quiver
- webhook : api와 유사한 자동 채팅 메세지 기능
- python faker : 언어마다 가짜 자료들(name, address, job…)을 만들어 줌
- Faker()로 인스턴스를 생성해줘야 함
- Faker(‘kr_KR’) : 한국어 설정
- python numpy
- ORM
(2) 발생한 오류
in _get_source_fast raise TemplateNotFound(template)
python에서 template를 찾을 수 없을 때 발생