책: "HTML 파일 보내기 가능"
책이 갱신되었다
업데이트됨장 "HTML 파일 보낼 수 있음".
계속 읽고 싶은 사람은 북의'괜찮다'또는'필자 스토킹'에 주목해야 한다. -)
다음은 책 내용의 발췌문이다.
요청을 설명하고 지정된 HTML 파일을 반환합니다.
이전 장까지 먼저 HTTP 형식으로 응답하는 서버를 만들 수 있습니다.
그러나 브라우저에서 보내온 요청에 대한 해명 처리가 없기 때문에 어떤 요청을 받더라도 몸이 항상 답장
It works!
한다.이러면 너무 심하니까 프로그램의 소스 코드와 다른 HTML 파일을 미리 준비하고 요청한 path로 지정한 파일을 응답 주체로 돌려주세요.
이른바 정적 파일 발표 기능.
서버의 소스 코드 등은 서버를 통해 공개할 필요가 없기 때문에 서버를 통해 공개하고자 하는 파일은
study/static/
의 디렉터리에 넣어야 한다예) 요청된 path
/index.html
=> study/static/index.html
의 내용이 응답 주체로 반환됨이런 상황입니다.
소스 코드
다른 지루한 것도 설명하지 않았으니 소스 코드로 직접 가보세요.
미리 준비한 HTML 파일을 응답체로 반납하기 위해 개량된 파일입니다.
소스 코드도 길어졌으니 이번부터 전체 소스 코드를 옮기지 마세요.
각 장, Giithub에 모든 소스 코드가 업로드되었으니 참조하십시오.
study/webserver.py
또 프로그램이 제대로 작동하는지 확인하기 위해 HTML 파일을 따로 준비해야 하기 때문에 그쪽도 만들어야 한다.
study
디렉터리 바로 아래에 static
디렉터리를 새로 만들고 그 중에서 index.html
를 만듭니다.모처럼 왔는데 아파치 안 베끼는 내용으로 바뀌었어요.여러분들이 좋아하는 콘텐츠로 만들 수 있어요.
하지만 파일 이름을 바꾸면 이 책의 설명처럼 작동할 수 없으니 파일 이름
index.html
을 유지해 주십시오.study/static/index.html
해설
10-13 행: HTML 파일을 배치할 디렉토리 정의
에서 HTML 파일을 배치할 디렉토리를 정의합니다
STATIC_ROOT
. # 実行ファイルのあるディレクトリ
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# 静的配信するファイルを置くディレクトリ
STATIC_ROOT = os.path.join(BASE_DIR, "static")
python에서 파일 경로를 처리할 수 없으면 읽기 어려울 수 있습니다BASE_DIR
: study
디렉토리의 절대 경로STATIC_ROOT
: study/static
디렉토리의 절대 경로43-61 행: 파일에서 응답 바디 생성
이것은 메인 요리다.
HTTP 요구 사항을 분석하여 path 정보를 추출합니다.
이후 path를 기반으로 파일을 읽고 응답 주체를 생성합니다.
# リクエスト全体を
# 1. リクエストライン(1行目)
# 2. リクエストヘッダー(2行目〜空行)
# 3. リクエストボディ(空行〜)
# にパースする
request_line, remain = request.split(b"\r\n", maxsplit=1)
request_header, request_body = remain.split(b"\r\n\r\n", maxsplit=1)
# リクエストラインをパースする
method, path, http_version = request_line.decode().split(" ")
# pathの先頭の/を削除し、相対パスにしておく
relative_path = path.lstrip("/")
# ファイルのpathを取得
static_file_path = os.path.join(self.STATIC_ROOT, relative_path)
# ファイルからレスポンスボディを生成
with open(static_file_path, "rb") as f:
response_body = f.read()
path 취득 후STATIC_ROOT
결합 취득static_file_path
, 그 전에 시작/
이 삭제되었음을 주의하십시오.python
os.path.join(base, path)
의 규격으로 두 번째 파라미터path
에 /
로 시작하는 절대 경로를 제공하면 첫 번째 파라미터base
를 무시하기 때문이다.시험해 보다
하고 싶은 걸 알면 소스 코드가 어렵지 않으니까 빨리 돌려봐.
다음은 북!
장 "HTML 파일 보낼 수 있음"
Reference
이 문제에 관하여(책: "HTML 파일 보내기 가능"), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/bigen1925/articles/publish-delivery-static-html텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)