Общая структура папок / файлов в приложении Flask
Я только что создал приложение фляги, и до сих пор у меня есть маршрутизатор для моего "Hello world!" шаблон.
Я хотел бы добавить немного (намного) больше функциональности, но мне интересно, как я должен структурировать каталог приложения.
Какой самый распространенный способ структурирования приложения Flask? Например, я должен создать routes.py
для всех моих маршрутов? Куда идут вещи по SQLAlchemy? Должны ли модели быть в models.py
?
12 ответов
Вам следует посетить страницу "Большие приложения" в разделе "Шаблоны" документации Flask: http://flask.pocoo.org/docs/patterns/packages/. Кажется, что это модель, которой следуют большинство людей, когда их приложение вызывает пакет, а не модуль.
я верю views.py
это то, что вы называете routes.py
, После этого модели будут идти в models.py
, формы будут идти в forms.py
, так далее.
Пример каталога FlaskApp:
yourapp/
/yourapp
/run.py
/config.py
/yourapp
/__init__.py
/views.py
/models.py
/static/
/main.css
/templates/
/base.html
/requirements.txt
/yourappenv
run.py
- содержит фактический код Python, который будет импортировать приложение и запустить сервер разработки.config.py
- хранит настройки для вашего приложения.__init__.py
- инициализирует ваше приложение, создавая экземпляр приложения Flask.views.py
- это где routes
определены.models.py
- здесь вы определяете модели для своего приложения.static
- содержит статические файлы, такие как CSS, Javascript, изображенияtemplates
- это где вы храните html
шаблоны т.е. index.html
, layout.html
requirements.txt
- здесь вы можете хранить зависимости пакета, вы можете использовать pip
yourappenv
- ваша виртуальная среда для разработки
Я бы сказал, что если вы разбиваете приложение, используйте разделенную, а не функциональную структуру. Я защищаю это, потому что вы, скорее всего, будете работать над одним из этих компонентов подразделения в любое время.
Этот тип структуры хорошо подходит для приложений на рынке или приложений SaaS, где разные группы пользователей используют разные типы представлений. API только колба приложение Я мог бы использовать функциональное разделение.
Вот примеры из Flask Blueprints. Чертежи - это, по сути, документированный совет, как разделить приложение Flask на более управляемые части. Подробнее об этом по адресу: http://exploreflask.com/en/latest/blueprints.html
Вот пример делительного разделения. Посмотрите, как каждая функция сгруппирована вместе.
yourapp/
__init__.py
admin/
__init__.py
views.py
static/
templates/
home/
__init__.py
views.py
static/
templates/
control_panel/
__init__.py
views.py
static/
templates/
models.py
Вот функциональный пример>
yourapp/
__init__.py
static/
templates/
home/
control_panel/
admin/
views/
__init__.py
home.py
control_panel.py
admin.py
models.py
Я думаю, что колба это микро рамки, и теперь вы должны решить, как создавать файлы и папки.
я использую этот способ:
- структура папок и файлов фляги -> https://gist.github.com/4545740
это около структуры Джанго
Я предлагаю вам увидеть какой-то проект, чтобы дать вам то, что вы хотите
- danjac / newsmeme - Bitbucket -> https://bitbucket.org/danjac/newsmeme/overview
- sean / склянка · GitHub -> https://github.com/sean-/flask-skeleton
Любой, кто ищет простую, удобную для начинающих структуру для проекта фляги, может найти это полезным:
|__movies
|__run.py
|__app
├── templates
│ └── index.html
│ └── signup.html
└── __init__.py
└── routes.py
Здесь "фильмы" - это название основного приложения. Он содержит "run.py" и папку "app". Папка "app" содержит все необходимые файлы фляги, такие как папка "templates", "__init __.py" и "rout.py".
Содержание:
run.py:
from app import app
__init.py__:
from flask import Flask
app = Flask(__name__)
from app import routes
app.run(debug=True)
rout.py:
from app import app
@app.route('/')
@app.route('/index')
def index():
return "Hello, World!"
Красота фляги есть - она очень гибкая. Вы можете легко создать django-подобную структуру проекта. Django популяризировал абстракцию функций в приложениях и делает их многократно используемыми, но это может быть излишним для многих проектов.
Но с флягой можно идти любым путем. Пишите многократно используемые приложения или пишите простые приложения. Проверьте эти скелеты печенья -
myproject ├── config.py ├── instance │ └── config.py ├── myproject │ ├── commands.py │ ├── controllers.py │ ├── extensions.py │ ├── forms.py │ ├── __init__.py │ ├── models.py │ ├── routes.py │ └── ui │ ├── static │ │ ├── css │ │ │ └── styles.css │ │ └── js │ │ └── custom.js │ └── templates │ └── index.html ├── README.md ├── requirements.txt └── wsgi.py
myproject ├── config.py ├── development.py ├── instance │ └── config.py ├── myproject │ ├── auth │ │ ├── controllers.py │ │ ├── forms.py │ │ ├── __init__.py │ │ ├── models.py │ │ └── routes.py │ ├── helpers │ │ ├── controllers.py │ │ ├── __init__.py │ │ └── models.py │ ├── __init__.py │ └── ui │ └── templates │ ├── 404.html │ ├── 500.html │ └── base.html ├── README.md ├── requirements.txt ├── tests │ ├── auth │ │ ├── __init__.py │ │ └── test_controllers.py │ └── __init__.py └── wsgi.py
Вы можете получить вдохновение от шаблонов печенья здесь, чтобы ускорить разработку вашего приложения
Вот основная файловая структура фляги, которую я регулярно использую.
yourapp/
static/
js
css
img
templates/
home.html
index.html
app.py
В папке static находятся все статические файлы сайта. Папка шаблонов содержит все HTML-страницы. а app.py содержит ваши представления Python.
Я решил вложить папку с исходным кодом в
src/
.
my_flask_app (project folder)
├── app.py
├── setup.py
├── src/
│ ├── my_flask_app/ (source code folder)
│ │ ├── config.py
│ │ ├── errors.py
│ │ ├── forms.py
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── routes.py
│ │ ├── static/
│ │ └── templates/
│ └── my_flask_app.egg-info/
|
└── tests/ (test folder)
Из-за этого я добавил
package_dir={'': 'src'}
в
setup.py
.
В flask мы можем поддерживать структуру mvc, например, как отдельные все мысли, например, 1 папка Templets содержит все файлы html 2 статическая папка содержит все файлы, связанные с css и boostrap 3 определяемая пользователем папка db для подключения к базе данных и операций crud 4 определяемая пользователем папка модели для доступа / привязка данных из Templets / front-end к db / back-end подключению и после основного файла активности
для ссылки на структуру ссылочного файла flask, как показано ниже https://flask.palletsprojects.com/en/1.1.x/tutorial/layout/
Хорошая идея - найти скелеты / шаблоны проектов на github
например вы можете посмотреть на это
Для больших проектов вот как выглядит моя структура каталогов
app_name(root folder)
│ .env
│ .gitignore
│ .gitattributes
│ README.MD
│ pyproject.toml
│
└── app(source code)
│ │ __init__.py
│ │ __main__.py
│ │ db.py
│ │ auth.py
│ │ forms.py
│ │ utils.py
│ │ config.py
│ │
│ └─── routes
│ __init__.py
│ views.py
│ api.py
│ auth.py
│
└─ resources
│ |─── static
│ │ css
│ │ js
│ │ images
│ │
│ └─── templates
│ base
| components
│
└─ tests
└─ venv
└─ docs