source

플라스크 청사진이란 게 정확히 뭐죠?

manysource 2022. 10. 15. 10:00

플라스크 청사진이란 게 정확히 뭐죠?

는 청사진에 대한 플라스크 공식 문서그것들을 사용하는 것에 대한 블로그 투고를 읽었다.

웹 앱에서도 사용해 본 적이 있습니다만, 그 내용이나 앱 전체에 어떻게 대응하고 있는지 전혀 알 수 없습니다.내 앱의 인스턴스와 비슷하지만 완전히 비슷하지 않은 이유는 무엇입니까?그 문서는 포괄적이지만 나는 그것을 자극하기 위해 문외한의 설명이나 계몽적인 유추를 찾고 있다.동료가 플라스크 설계도를 설명해 달라고 했을 때 나는 충분히 당황했다.

Blueprint는 웹 응용 프로그램의 "섹션"을 생성하기 위한 템플릿입니다.금형이라고 생각할 수 있습니다.

금메달이 갓 제거된 메달리온 몰드

Blueprint는 여러 위치에서 애플리케이션에 적용할 수 있습니다.적용할 때마다 Blueprint는 애플리케이션의 석고에 새 버전의 구조를 생성합니다.

# An example
from flask import Blueprint

tree_mold = Blueprint("mold", __name__)

@tree_mold.route("/leaves")
def leaves():
    return "This tree has leaves"

@tree_mold.route("/roots")
def roots():
    return "And roots as well"

@tree_mold.route("/rings")
@tree_mold.route("/rings/<int:year>")
def rings(year=None):
    return "Looking at the rings for {year}".format(year=year)

이것은 나무를 다루는 간단한 금형입니다. 나무를 다루는 모든 애플리케이션은 나뭇잎, 뿌리, 고리(연간)에 접근할 수 있어야 합니다.그 자체로는 속이 빈 셸입니다.어플리케이션에 인상을 줄 때까지 라우팅도 응답도 할 수 없습니다.

from tree_workshop import tree_mold

app.register_blueprint(tree_mold, url_prefix="/oak")
app.register_blueprint(tree_mold, url_prefix="/fir")
app.register_blueprint(tree_mold, url_prefix="/ash")

후 에서 '을 '감동'을 수 .register_blueprint- 을 "" - "접수" - "접수" - "접수"에서 지정한 에 "접수.url_prefix.

@Devasish의 코멘트에서 지적된 바와 같이, 이 문서는 좋은 답변을 제공합니다.

http://exploreflask.com/en/latest/blueprints.html

기사에서 인용:

그 예로는 페이스북이 있습니다.Facebook이 Flask를 사용했다면 정적 페이지(즉, 로그아웃된 홈, 등록, 정보 등), 대시보드(즉, 뉴스 피드), 프로파일(/robert/about 및 /robert/photos), 설정(/설정/보안 및 /settings/privacy) 등에 대한 청사진을 가지고 있을 수 있습니다.이들 컴포넌트는 모두 일반적인 레이아웃과 스타일을 공유하지만 각각 독자적인 레이아웃을 가지고 있습니다.

이것은 매우 좋은 해석이며, 특히 "Facebook이 Flask를 사용한 경우"라는 부분이 그렇습니다.설계도가 실제로 어떻게 작동하는지 시각화할 수 있는 구체적인 상황을 제공합니다.

저도 이 사실을 알게 된 지 얼마 안 되어 몇 가지 문서 출처를 읽고 혼란스러웠습니다.처음에는 C#/Java OOP Interface Implementation 스타일과 비슷하다고 생각했습니다.이 스타일에서는, 몇개의 항목을 정의할 수 있습니다만, 실장의 상세한 것에 대해서는 나중에 말할 필요가 없습니다.하지만, 나는 우연히 이 페이지를 발견했는데, 그것은 매우 비전문가적인 용어로 되어 있다.https://hackersandslackers.com/flask-blueprints/

기본적으로 링크에서 언급되어 실제 사용법을 명확하게 알 수 있는 장점 중 하나는 앱을 논리적으로 구성/분할 수 있다는 것입니다.따라서 설계된 캡슐화가 제공됩니다.

편집: 현재 웹 앱 코드를 구분하는 데 사용하고 있습니다.리드 디자이너가 Vue.js에서 프런트엔드를 만들고 싶어한다는 것도 잘한 결정이었습니다.아직 사용하지 않았지만 프로젝트 파일을 보면 훨씬 더 지저분하고 비슷한 이름의 파일로 인해 많은 명명 충돌이 발생하기 쉬운 인스턴스가 있을 수 있습니다.

대규모 프로젝트에서는 모든 코드가 같은 파일에 있으면 안 됩니다.대신, 더 큰 코드를 기능을 기반으로 분할하거나 개별 파일로 분할할 수 있습니다.벽돌이 벽을 형성하는 것처럼.

간단한 플라스크 앱

app = Flask(__name__)

설계 플라스크 앱

import from_any_module.part_1
import from_other_module.part_2

app = Flask(__name__)

app.register_blueprint(part_1)
app.register_blueprint(part_2)

위 앱의 Blueprint

from flask import Blueprint
part_1 = Blueprint(part_1)

@part_1.route('/url')
def function()
    return view

Flask Blueprint를 사용하면 애플리케이션의 재사용 가능한 인스턴스를 생성할 수 있습니다.이를 위해 프로젝트를 모듈로 구성합니다.그런 다음 이러한 모듈이 메인 어플리케이션으로 등록됩니다.애플리케이션 팩토리 작성에 도움이 됩니다.

언급URL : https://stackoverflow.com/questions/24420857/what-are-flask-blueprints-exactly