파이썬에서 werkzeug 라이브러리의 자세한 사용법

        Werkzeug는 웹 애플리케이션을 구축하는 데 사용할 수 있는 Python WSGI 도구 라이브러리입니다. Werkzeug 라이브러리의 일반적인 용도는 다음과 같습니다.

1. 간단한 웹 애플리케이션 만들기

from werkzeug.wrappers import Request, Response


@Request.application
def application(request):
    return Response('Hello world')


if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 5000, application)

위의 예에서 애플리케이션 함수는 @Request.application 데코레이터를 사용하여 WSGI 애플리케이션으로 변환됩니다. 그런 다음 run_simple 함수를 사용하여 포트 5000에서 로컬로 애플리케이션을 실행합니다.

작업 결과:

2. 라우팅 및 보기 기능

 

from werkzeug.wrappers import Request, Response
from werkzeug.routing import Map, Rule


def hello_world(request):
    return Response("Hello world")


url_map = Map([
    Rule('/', endpoint='hello')
])


@Request.application
def application(request):
    urls = url_map.bind_to_environ(request.environ)
    endpoint, args = urls.match()
    if endpoint == 'hello':
        return hello_world(request)
    return Response('Not Found', status=404)


if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 5000, application)

위의 예에서는 Map 및 Rule 클래스를 사용하여 URL 라우팅 규칙을 정의한 다음 라우팅 규칙에 따라 애플리케이션 기능에서 해당 보기 기능을 실행합니다.

3. 요청 및 응답 객체

from werkzeug.wrappers import Request, Response


@Request.application
def application(request):
    name = request.args.get('name', 'World')
    response = Response(f'Hello, {name}!')
    response.headers['Content-Type'] = 'text/plain'
    return response


if __name__ == '__main__':
    from werkzeug.serving import run_simple

    run_simple('localhost', 5000, application)

위의 예에서 요청 객체를 사용하여 URL 매개변수를 가져오고 응답 객체를 사용하여 매개변수가 포함된 응답을 반환합니다.

4. 템플릿 엔진

from werkzeug.wrappers import Request, Response
from werkzeug.utils import import_string
from werkzeug.routing import Map, Rule
from werkzeug.exceptions import HTTPException
from jinja2 import Environment, FileSystemLoader


class Application:
    def __init__(self, template_path='templates'):
        self.url_map = Map([
            Rule('/', endpoint='index'),
            Rule('/hello/<name>', endpoint='hello')
        ])
        self.template_env = Environment(loader=FileSystemLoader(template_path))

    def render_template(self, template_name, **context):
        template = self.template_env.get_template(template_name)
        return Response(template.render(**context), content_type='text/html')

    def index(self, request):
        return self.render_template('index.html')

    def hello(self, request, name):
        return self.render_template('hello.html', name=name)

    @Request.application
    def __call__(self, request):
        urls = self.url_map.bind_to_environ(request.environ)
        try:
            endpoint, args = urls.match()
            view = getattr(self, endpoint)
            return view(request, **args)
        except HTTPException as e:
            return e


if __name__ == '__main__':
    from werkzeug.serving import run_simple

    app = Application()
    run_simple('localhost', 5000, app)

위의 예에서는 라우팅 및 보기 기능을 관리하기 위해 Application 클래스를 만들고 Jinja2 템플릿 엔진을 사용하여 HTML 템플릿을 렌더링했습니다.

이는 양식 처리, 파일 업로드, 쿠키 및 세션 관리 등과 같은 다른 많은 기능도 제공하는 Werkzeug 라이브러리의 일반적인 용도 중 일부에 불과합니다. 자세한 사용법 및 기능은 Werkzeug의 공식 문서를 참조할 수 있습니다.

Supongo que te gusta

Origin blog.csdn.net/weixin_44799217/article/details/132030822
Recomendado
Clasificación