Chatbot Project 4th

Posted by on December 20, 2018

Recently by the same author:


Python에서 Singleton 구현

You may find interesting:


Reentrant Lock


Thread의 lock

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) 데이터 저장 방법

  1. text : appending, 불러올 때 불편하고 느림
    • 파일 열기(open), 읽기(read), 쓰기(write), 수정(append), 파일 닫기(close)


  1. .json (import json) => dictionary
    • 읽기(Read), 쓰기(Write), 수정(Append)


  1. .csv : Comma Seperated Value (import cvs) : 엑셀과 유사, comma로 값을 구분 => 2-D list
    • .tsv : Tab Seperated Value : import cvs만으로 사용 가능
      • writer, reader에 delemeter=’\t’ 추가
    • python 자체가 .csv를 2중 배열로 읽어 온다
  • 읽기(Read), 쓰기(Write), 수정(Append)
  • 한 행씩 수정 및 추가, 리스트 조작
  • 기본 문법
    • csv.writer(streamObject) : csv 조작 객체를 반환
    • object.writerow([list]) : 배열로 데이터를 삽입


  1. 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를 찾을 수 없을 때 발생