프레임워크가 필요 없는 파이썬 웹사이트 파트 2

8637 단어
프레임워크를 사용하지 않고 파이썬으로 웹사이트를 만드는 방법의 두 번째이자 마지막 부분입니다.
, 이 두 기사의 목적은 새로운 개발자에게 프레임워크나 다른 PyPI 패키지를 사용하지 않고 파이썬으로 웹사이트를 만들 수 있다는 것을 보여주는 것입니다.

코드 표시



먼저 보기, 템플릿 및 논리를 분리해야 합니다.
우리는 다음과 같은 폴더 구조를 가질 것입니다:

--- mainFolder
---- app.py
--------- views
----------- __init__.py
----------- views.py
--------- templates
----------- index.html
--------- utils
----------- __init__.py
----------- render.py


HTML 템플릿을 렌더링하는 코드를 작성할 render.py 파일부터 시작하겠습니다.

# mainFolder/utils/render.py
def render(path):
    with open(path, "r") as f:
        template= f.read()
        return  template.encode("utf-8")


init.py에서 렌더링 메서드를 가져옵니다.

 #mainFolder/utils/__init__.py
 from .render import render


이제 HTML 템플릿으로 이동하여 이 코드를 추가합니다.

<!--  mainFolder/templates/index.html -->

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <header>
      <h1>Home page</h1>
    </header>
    <main>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut
        pellentesque sapien. Donec id pellentesque sem. Praesent vel urna vitae
        odio hendrerit malesuada et nec enim. Nulla risus dui,
      </p>
      <form action="/" method="POST">
        <input type="text" name="text" value="azaze" />
        <button type="submit">Submit</button>
      </form>
    </main>
  </body>
</html>


이제 보기를 추가해 보겠습니다.

# mainFolder/views/index.py
from utils import render
def index(environ):
    return render("templates/index.html")


보기 폴더의 init.py 파일에서 인덱스 가져오기

# mainFolder/views/__init__.py
from .index import index


마지막 단계는 메인 파일인 app.py를 클라이언트 측으로 응답을 보내고 게시 요청을 처리할 위치로 이동합니다.

from views import index

def app(environ, start_response):
        data = index(environ)
        if environ['REQUEST_METHOD'] == "POST":
            print("inputs ----------------- ", environ['wsgi.input'].read())
        start_response("200 OK", [
            ("Content-Type", "text/html"),
            ("Content-Length", str(len(data)))
        ])
        return iter([data])


if __name__ == '__main__':
    from gevent.pywsgi import WSGIServer
    WSGIServer(('', 8000),app, spawn=None).serve_forever()


당신은 실행할 수 있습니다

python app.py


헤더, 입력 양식 및 제출 버튼이 있는 HTML 템플릿이 표시됩니다.

입력에 텍스트를 추가하고 제출 버튼을 누르고 콘솔을 확인하면 텍스트가 표시됩니다.

inputs -----------------  b'text=azaze'
::1 - - [2020-10-02 13:06:19] "POST / HTTP/1.1" 200 777 0.003350


추가 탐색을 위해



Do it your self framework

WSGI handle post request

소셜 바닥글



Toumi Abderrahmane 지음. github

좋은 웹페이지 즐겨찾기