Flask response 응답 에 대한 구체 적 인 사용

6330 단어 Flaskresponse호응
머리말
클 라 이언 트 가 http 요청 을 Flask 프로그램 에 보 내 고 Flask 가 보기 함 수 를 호출 하면 응답 하 는 내용 으로 되 돌려 줍 니 다.대부분의 경우 응답 은 Html 페이지 로 클 라 이언 트 를 전송 하 는 간단 한 문자열 입 니 다.
그러나 http 프로 토 콜 에 필요 한 것 은 응답 을 요청 하 는 문자열 만 이 아 닙 니 다.http 응답 에서 중요 한 부분 은 상태 코드 입 니 다.Flask 는 200 으로 설정 되 어 있 으 며 요청 이 성공 적 으로 처리 되 었 음 을 의미 합 니 다.
응답 응답
모듈 형식 응답
보기 함수 가 되 돌아 오 는 응답 에 서로 다른 상태 코드 를 사용 해 야 한다 면 디지털 코드 를 두 번 째 반환 값 으로 응답 텍스트 에 추가 할 수 있 습 니 다.

from flask import Flask

app = Flask(__name__)


#            
@app.route("/index")
def index():
    #                    
    return "index page", 400

보기 함수 가 돌아 오 는 응답 은 세 번 째 인 자 를 받 아들 일 수 있 고 응답 헤드 도 계속 뒤에 놓 고 돌아 갈 수 있 습 니 다.예 를 들 어:

from flask import Flask

app = Flask(__name__)


#            
@app.route("/index")
def index():
    header_dict = {
        "name": "jack",
        "age": 22
    }

    header_list = [("name", "hui"), ("age", 21)]

    #                           
    return "index page", 400, header_dict
    # return "index page", 400, header_list

그러나 응답 헤드 정 보 는 하나의 사전 이나 목록 으로 포장 해 야 합 니 다.사전 은 이해 하기 쉽 고 목록 에는 응답 헤드 정 보 를 원 그룹 으로 저장 합 니 다.여기 서 돌아 오 는 것 은 하나의 예 일 뿐 입 니 다.진정 으로 돌아 올 때 응답 헤드 정 보 를 합 리 적 으로 설정 해 야 합 니 다.예 를 들 어

header_dict = {
    "Content-Type": " text/html; charset=utf-8",   #          
    "Set-Cookie": "name=hui; Path=/"        #     cookie
}
return "index page", 200, header_dict   
브 라 우 저 개발 자 도구 응답 정보 보기

기억 하기:원 그룹 형식 으로 되 돌아 갑 니 다.반환 값 위치 가 복잡 해 서 는 안 됩 니 다.
첫 번 째 대응 응답 체
두 번 째 대응 상태 코드
세 번 째 대응 응답 헤드
make_응답 함수
1 개,2 개 또는 3 개의 값 으로 구 성 된 원 그룹 을 되 돌려 주지 않 으 려 면 Flask 보기 함수 가 Response 대상 을 되 돌려 줄 수도 있 습 니 다.make_response 함 수 는 1 개,2 개 또는 3 개의 인자(보기 함수 의 반환 값 과 같 음)를 받 아들 이 고 Response 대상 을 되 돌려 줍 니 다.어떻게 사용 하 는 지.

from flask import Flask, make_response

app = Flask(__name__)

# mk_response       
@app.route("/info")
def info():
    resp = make_response("info page")
    resp.status = "666 ithui"
    resp.headers["name"] = "hui"
    resp.headers["age"] = 21
    return resp
메모:makeresponse()대상 이 상태 코드 를 설정 할 때 문자열 이 필요 합 니 다.숫자 로 쓰 지 마 십시오.
json 형식 데이터 되 돌리 기

import json
from flask import Flask, make_response

app = Flask(__name__)


@app.route("/json")
def resp_json():
    data = {
        "name": "hui",
        "age": 21
    }

    json_str = json.dumps(data)
    headers = {"Content-Type": "application/json"}
    return json_str, 200, headers

json 모듈 을 통 해 데이터 json 화 를 할 수 있 지만,일반적으로 json 데 이 터 를 되 돌려 주 려 면 전단 에서 되 돌아 오 는 데이터 형식 을 설정 해 야 합 니 다.Flask 는 기본적으로 text/html 이기 때문에 응답 체 콘 텐 츠 형식 을 따로 설정 해 야 합 니 다.
json 형식 데이터 가 웹 개발 에서 자주 사용 되 기 때문에 Flask 에서 jsonify()함수 로 json 데이터 에 대한 응답 을 제공 합 니 다.
구체 적 으로 다음 과 같이 사용한다.

from flask import Flask, jsonify

app = Flask(__name__)


@app.route("/json")
def resp_json():
    data = {
        "name": "hui",
        "age": 21
    }
    return jsonify(data)
    # return jsonify(name="jack", age=20)

jsonify()는 사전 을 받 아들 일 수도 있 고 key-value 형식 으로 json 데 이 터 를 구성 할 수도 있다.이렇게 하면 훨씬 편리 하 다
기타 특수 응답
redirect()방향 바 꾸 기
방향 을 바 꾸 는 특수 응답 형식 이 있 습 니 다.이 응답 형식 은 페이지 문서 가 없고 브 라 우 저 에 새 페이지 를 불 러 오 는 데 사용 할 새 주소 만 알려 줍 니 다.

from flask import Flask, redirect

app = Flask(__name__)

#          
@app.route('/baidu')
def red_baidu():
    resp = make_response()
    resp.status = "302"
    resp.headers['Location'] = "http://www.baidu.com"
    return resp


# redirect      
@app.route("/csdn")
def red_csdn():
    csdn_url = "https://blog.csdn.net/qq_43629857"
    return redirect(csdn_url)

방향 을 바 꾸 는 것 은 302 상태 코드 를 자주 사용 하여 가리 키 는 주 소 는 Location 의 첫 번 째 부분 에서 제공 합 니 다.자주 사용 하기 때문에 Flask 는 이러한 응답 을 생 성 하 는 데 보조 함수 redirect()를 제공 합 니 다.
abort()인 터 럽 트
abort()상태 코드 인 자 를 받 습 니 다.

from flask import Flask, request, abort

app = Flask(__name__)

# abort  
# http://127.0.0.1:5000/login?name=hui&pwd=123
@app.route("/login", methods=['GET'])
def login():
    name = request.args.get("name")
    pwd = request.args.get("pwd")
    if name != "hui" or pwd != "123":
        abort(404)

    return "    "

일반적으로 이 abort()함 수 는 오류 정보 처리 장식 기 app.errorhandler()와 함께 사용 합 니 다.다음 과 같 습 니 다.

#   404    
@app.errorhandler(404)
def handle_404_err(err):
    return f"404      {err}"


#   500    
@app.errorhandler(500)
def handle_500_err(err):
    return f"500       {err}"


# abort  
# http://127.0.0.1:5000/login?name=hui&pwd=123
@app.route("/login", methods=['GET'])
def login():
    name = request.args.get("name")
    pwd = request.args.get("pwd")
    if name != "hui" or pwd != "123":
        abort(404)

    return "    "
소스 코드
원본 코드 가 올 라 왔 습 니 다Gitee HuiDBK/Flask Basic-코드 클 라 우 드-오픈 소스 중국(gitee.com).방문 을 환영 합 니 다.
Flask response 응답 에 대한 구체 적 인 사용 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Flask response 응답 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기