I. 서론
또한 쓰기 뭔가 잊지 수 있지만 그들이 기록을 잊을 것이다, 그렇지 않은 쓰기 뭔가 다운을 느낌,하지만 더 같이 읽어 동기 부여 할 수있다
- 책은 사용 : 플라스크 웹 개발
- 샘플 코드 책 : https://github.com/miguelgrinberg/flasky.git
- 작동 환경 : PyCharm
둘째, 프로그램의 기본 구조
1. 프로그램의 시작
# -*- coding:utf-8 -*- from flask import Flask app = Flask(__name__) @app.route('/') #使用app.route修饰器,把修饰函数注册为路由 def index(): #index()这样的函数就叫视图函数 return '<h1>Hello World!<h1>' #@app.route('/user/<int::id>') int;float;path:字符串不把/视作分隔符 @app.route('/user/<name>') def user(name): return '<h1>Hello, %s!<h1>' %name if __name__ == '__main__': #debug=Ture启用调试模式 app.run(debug=True) #run方法启动Flask集成的开发Web服务器
2. 요청
매개 변수의 큰 숫자를 방지하기 위해 불필요한 혼란보기 기능, 플라스크를 사용하게 상황 전역으로 액세스 특정 개체에 임시로 변경.
사용이 첫번째 프로그램 컨텍스트 또는 요청 컨텍스트를 활성화해야합니다 전에 다음 삭제 프로세스가 완료
응용 프로그램 컨텍스트 :
- CURRENT_APP : 현재 프로그램 활성화 프로그램의 예
- g는 : 물체 일시적 처리 요구시 저장된, 모든 요청이 변수를 재설정
요청 컨텍스트 :
- 요청 : 요청 객체는, HTTP는 클라이언트 패키지의 내용에 의해 전송 된 요청
- 세션 : 사용자 세션, 저장 요구 사이에 "기억"할 수있는 사전의 필요성에 대한 값
꽤 있지만은 다른 요청에 추가하여 사용하는 방법을 이해하지만, 나중에 언급 될 책 ......그들은 다른 프로세스에 방해가되지 않는 동안 전 세계적으로 접근 스레드의 컨텍스트 특정 변수의 플라스크 메이크업 사용.
이 요청에 전역 변수 스레드로 처리 :
# -*- coding:utf-8 -*- from flask import Flask from flask import request #引入 app = Flask(__name__) @app.route('/') def User_Agent(): user_agent = request.headers.get('User-Agent') return '<p>You brower is %s</p>' %user_agent if __name__ == '__main__': app.run(debug=True)
3. 요청 후크
우리는 함수를 등록해야합니다 :
- before_first_request : 첫 번째 요청을 처리하기 전에 실행
- before_request : 각 요청 전에 실행
- after_request : 아무 처리되지 않은 예외가 슬로우되지 않는 경우, 각 요청 후에 실행
- teardown_request : throw되는 처리되지 않은 예외가있는 경우에도, 각 실행 후 요청
요청보기 기능 일반 콘텍스트 g 글로벌 변수 사이 후크 함수가 데이터를 공유
- 데이터베이스에서 로그인 사용자를로드하고, g의 .user에 그것을 저장 before_first_request
- 때 이후보기 함수를 호출 한 다음 사용자 g.user를 얻기 위해 뷰 기능을 사용
약간은 이해하지만, 나중에 언급 될 책이지만 ......
4. 응답
대부분의 경우, 응답은 간단한 문자열이며, HTML 페이지로 다시 클라이언트로 전송
함수는 다른 코드를 사용하여 뷰 상태 요구에 대한 응답을 반환하는 경우 일 수 두번째 창 등의 디지털 코드 값
@app.errorhandler(404) def page_not_found(e): return render_template('404.html'), 404
뷰 함수가 반환 응답 개체 :
make_sense () 1-3 허용 가능한 파라미터 및 반환 응답 객체 :
from flask import make_response @app.route('/') def index(): response = make_response('This document carries a cookie!') response.set_cookie('answer','42') return response
리디렉션 (302) : 리디렉션 ()
from flask import redirect @app.route('/') def index(): return redirect('http://www.xxxx.com')
오류 처리 : 중단 ()
#如果URL中动态参数id对应的用户不存在,就返回404 from flask import abort @app.route('/user/<id>') def get_user(id): user = load_user(id) if not user: abort(404) return 'Hello, %s' %user,name