Cấu tạo bình trăn

Tôi sẽ nói nếu bạn chia nhỏ ứng dụng, hãy sử dụng bộ phận thay vì cấu trúc chức năng. Tôi ủng hộ điều này bởi vì bạn có nhiều khả năng làm việc trên 1 trong những thành phần bộ phận này bất cứ lúc nào

Loại cấu trúc này phù hợp với thị trường hoặc ứng dụng SaaS nơi các nhóm người dùng khác nhau sử dụng một loại chế độ xem khác nhau. API chỉ ứng dụng bình tôi có thể sử dụng phân tách chức năng

Dưới đây là các ví dụ từ Flask Blueprints. Bản thiết kế về cơ bản là tài liệu hướng dẫn cách chia nhỏ ứng dụng Flask để có nhiều phần dễ quản lý hơn. Thêm về điều này tại. http. // khám phá bình. com/vi/mới nhất/bản thiết kế. html

Flask là một microframework và nó không hạn chế chúng ta với một mẫu cấu trúc thư mục duy nhất. Thay vào đó, nó cho chúng ta tự do thực hiện lựa chọn giải pháp của riêng mình. Giống như mọi thứ đều có 2 mặt tốt và xấu, khái niệm tương tự cũng được áp dụng ở đây. Có, chúng tôi có thể xây dựng cấu trúc dự án bình của riêng mình nhưng bạn sẽ tìm thấy nhiều cách triển khai khác nhau trên internet. Vì vậy, sau một số nghiên cứu và triển khai, tôi đã đưa ra cấu trúc dự án cấp đầu vào cho ứng dụng bình

Cấu trúc dự án Flask

Lý do tôi gọi nó là cấp nhập cảnh là vì tôi sẽ không thêm các lệnh tùy chỉnh hoặc thứ gì đó tương tự để làm phức tạp mục tiêu chính

Mục tiêu chính của chúng tôi là xác định cấu trúc dự án bình có khả năng mở rộng cao

Bản thân tôi đã từng làm việc trên nhiều framework back-end khác nhau bao gồm Laravel, Django, CodeIgniter, v.v.

Tất cả các khung này có một kiến ​​trúc khác nhau mà chúng tuân theo. Bây giờ, trước tiên hãy hiểu tại sao mọi người nghĩ về khả năng mở rộng của ứng dụng web

Vì đây là một bài viết dựa trên Flask nên hãy thảo luận về nó theo cách của Flask. Bạn bắt đầu xây dựng một ứng dụng web với một ý tưởng rất cơ bản và theo thời gian, nó không ngừng phát triển

Bạn đang thêm nhiều mã hơn vào cùng một tệp python và đột nhiên bạn thấy nó được tăng tốc và bạn đang gặp sự cố nghiêm trọng khi gỡ lỗi

Bạn có thể tưởng tượng hàng trăm phương thức trong một tệp python. Vì vậy, để thoát khỏi vấn đề này Blueprint đã được giới thiệu

Bản thiết kế bình

Blueprint cung cấp một cách rất rõ ràng để xây dựng cấu trúc dự án bình định hướng theo miền mô-đun. Nếu bạn đã sử dụng Django thì bạn sẽ thấy nó rất giống

Lý do sử dụng bản thiết kế

Có nhiều lý do để sử dụng bản thiết kế trong Flask

  • Bản thiết kế có thể giúp chia toàn bộ cơ sở mã thành các khối nhỏ hơn
  • Nó có thể giúp chúng tôi thiết kế cấu trúc dự án bình hướng miền
  • Tăng khả năng sử dụng lại mã
  • Bản thiết kế cũng có thể có tập hợp các tệp tĩnh, mẫu và trang lỗi tùy chỉnh của riêng chúng

Vì vậy, hãy nhanh chóng thiết lập một dự án bình với bản thiết kế

Chúng tôi sẽ sử dụng cấu trúc trên cho ứng dụng của chúng tôi. Hãy bắt đầu từ đầu và hiểu tiện ích của từng tệp

Khái niệm cơ bản ở đây là một trang web bình có thể có nhiều ứng dụng và mỗi ứng dụng sẽ có bộ mô hình, chế độ xem và mẫu riêng

Ở đây các ứng dụng là bản thiết kế bình nên bạn đặt tên cho thư mục là ứng dụng hoặc bản thiết kế

ứng dụng. py

from flask import Flask
from database import database

# blueprint import
from apps.app1.views import app1
from apps.app2.views import app2

def create_app[]:
    app = Flask[__name__]
    # setup with the configuration provided
    app.config.from_object['config.DevelopmentConfig']
    
    # setup all our dependencies
    database.init_app[app]
    
    # register blueprint
    app.register_blueprint[app1]
    app.register_blueprint[app2, url_prefix="/app2"]
    
    return app

if __name__ == "__main__":
    create_app[].run[]

Ở đây bên trong ứng dụng. py, chúng tôi đã nhập bản thiết kế từ thư mục của ứng dụng. Chúng tôi có một phương pháp duy nhất để thiết lập ứng dụng bình của chúng tôi với dữ liệu cấu hình từ cấu hình. tập tin py

Ngoài ra, nó gọi phương thức init_app của SQLAlchemy để thiết lập nó với ứng dụng bình của chúng tôi và tạo tất cả các cơ sở dữ liệu

Tiếp theo, chúng tôi đăng ký các bản thiết kế với phương thức register_blueprint. Nơi chúng tôi cũng có thể chuyển thêm url_prefix

Cuối cùng, trong khối if, chúng ta sẽ gọi phương thức chạy trên ứng dụng của mình

cấu hình. py

import os

class Config[object]:
    DEBUG = False
    TESTING = False
    CSRF_ENABLED = True
    SECRET_KEY = '57e19ea558d4967a552d03deece34a70'
    SQLALCHEMY_TRACK_MODIFICATIONS = False

class ProductionConfig[Config]:
    DEBUG = False
    SQLALCHEMY_DATABASE_URI = os.environ.get['DATABASE_URL']

class DevelopmentConfig[Config]:
    ENV="development"
    DEVELOPMENT=True
    DEBUG=True
SQLALCHEMY_DATABASE_URI="sqlite:///development_database.db"

cấu hình. py có một lớp tên là config và sau đó chúng ta có 2 lớp kế thừa. Lớp ProductionConfig chứa các giá trị cấu hình cho sản xuất

Lớp DevelopmentConfig chứa cấu hình để phát triển

cơ sở dữ liệu. py

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy[]

def init_app[app]:
    db.init_app[app]
    db.create_all[app=app]

Tệp này sẽ chỉ tạo một đối tượng SQLAlchemy và khởi tạo nó cũng như tạo tất cả các bảng cơ sở dữ liệu từ tất cả các mô hình. py bên trong bản thiết kế hoặc ứng dụng

thư mục tĩnh

Thư mục tĩnh ở cấp gốc sẽ chứa tất cả các tệp tĩnh được yêu cầu trong toàn bộ dự án. Chúng tôi cũng có thể có các thư mục tĩnh riêng lẻ cho từng bản thiết kế

Tuy nhiên, trong trường hợp đó, việc sử dụng url_prefix là bắt buộc. Vì vậy, tốt hơn là đặt một thư mục tĩnh duy nhất ở thư mục gốc

thư mục mẫu

Thư mục mẫu ở thư mục gốc sẽ chứa tất cả các tệp bố cục mà tất cả các bản thiết kế đều có thể truy cập được

Vì các tệp bố cục cũng sẽ truy cập từ các bản thiết kế nên tốt hơn là đặt chúng ở cấp cơ sở

thư mục ứng dụng

Thư mục ứng dụng của cấu trúc dự án bình chứa tất cả các bản thiết kế và chúng ta có thể có bao nhiêu bản thiết kế bên trong nó như auth, blog, store, v.v.

thư mục bản thiết kế [app1, app2]

Phần quan trọng nhất trong cấu trúc dự án bình của chúng tôi

Mỗi bản thiết kế sẽ có một khung nhìn. py, người mẫu. tệp py và thư mục mẫu. Bên trong các mẫu, thư mục đảm bảo tạo một thư mục khác có tên là thư mục bản thiết kế

Bạn có thể có 2 mẫu có cùng tên tệp bên trong 2 bản thiết kế khác nhau. Trong trường hợp đó, bình sẽ sử dụng bình đầu tiên được tìm thấy

Để thoát khỏi tình huống mơ hồ này, cần tạo một thư mục có tên bản thiết kế bên trong các mẫu

ứng dụng/app1/lượt xem. py

from flask import Blueprint, request, url_for, redirect, render_template, flash
app1 = Blueprint['app1', __name__, template_folder="templates/app1"]

@app1.route["/"]
def home[]:
    return render_template['index.html']

@app1.app_errorhandler[404]
def page_not_found[e]:
    return render_template['404.html'], 404

Chỉ cần nhập Bản thiết kế từ bình và thêm một dòng để chuyển đổi tệp dạng xem thành bản thiết kế

Bên trong hàm tạo bản thiết kế, chúng tôi đã chuyển tên và đường dẫn thư mục mẫu. Ngoài ra, đường dẫn tệp tĩnh cũng có thể được chuyển

Mỗi bản thiết kế cũng có thể có trình xử lý lỗi riêng. Mà chúng ta có thể tạo bằng cách sử dụng app_errorhandler

ứng dụng/app1/mô hình. py

from database.database import db
from flask_login import UserMixin

class User[db.Model, UserMixin]:
    id = db.Column[db.Integer, primary_key=True]
    name = db.Column[db.String[150]]
    email = db.Column[db.String[150], unique=True]
    password = db.Column[db.String[150]]

def __init__[self, name, email]:
    self.name = name
    self.email = email

Trong tệp mô hình của bản thiết kế, chúng ta chỉ cần nhập db và tạo mô hình bằng SQLAlchemy

ứng dụng/app1/mẫu/app1/chỉ mục. html

{% extends "layouts/app.html" %}

{% block content %}

Build an amazing Flask App

{% endblock %}

Các mẫu bên trong bản thiết kế có thể dễ dàng mở rộng bố cục. Đây là bố cục/ứng dụng. html sẽ lấy nội dung tệp từ thư mục gốc

Vì vậy, đây là cách sử dụng bản thiết kế với bình để tạo cấu trúc dự án bình giúp mở rộng quy mô

Bạn cũng có thể có một thư mục có tên là tiện ích mở rộng ở cấp cơ sở để xử lý việc khởi tạo và thiết lập các tiện ích mở rộng bình khác nhau

Tôi hy vọng bài viết này đã giúp bạn thiết lập cấu trúc dự án bình. Nó phù hợp để sử dụng khi bạn đang làm việc trên một ứng dụng quy mô lớn hoặc trung bình

Flask là loại khung nào?

Flask là micro-framework của Python để phát triển ứng dụng web . Nó được phát triển bởi Armin Ronacher, người đã lãnh đạo một nhóm những người đam mê Python quốc tế có tên là Pocco. Flask bao gồm bộ công cụ Werkzeug WSGI và công cụ mẫu Jinja2.

Các tính năng của Flask Python là gì?

TÍNH NĂNG .
máy chủ phát triển tích hợp và trình gỡ lỗi nhanh
hỗ trợ tích hợp cho thử nghiệm đơn vị
Gửi yêu cầu RESTful
tạo khuôn mẫu Jinja2
hỗ trợ cookie an toàn [phiên phía máy khách]
WSGI 1. 0 phù hợp
dựa trên Unicode

Bình ứng dụng [__ tên __] trong Python là gì?

app = Flask[__name__, instance_relative_config=True] tạo phiên bản Flask. __name__ là tên của mô-đun Python hiện tại . Ứng dụng cần biết vị trí của nó để thiết lập một số đường dẫn và __name__ là một cách thuận tiện để nói với ứng dụng đó.

Cái nào tốt hơn Django hoặc Flask?

Là một khung web toàn ngăn xếp, Django phù hợp nhất để phát triển các ứng dụng web lớn và phức tạp , trong khi Flask là một nền tảng nhẹ, có thể mở rộng .

Chủ Đề