Примечание: все еще в разработке!
Текущая версия: 0.0.0
Бета.
Flask-BDA все еще находится на начальной стадии разработки и тестируется с версией Python 3.8.6.
Текущая дорожная карта и общий план проекта: https://trello.com/b/uu4HNPBh/flask-bda-features-roadmap.
Flask-BDA будет использовать семантическое управление версиями для своих выпусков со схемой {major}.{minor}.{patch}
для номеров версий, где:
Устаревшие версии будут сохранены как минимум для 3 второстепенных версий после версии 0.0.1
Другие решения, такие как Tableau, Power BI и Amazon QuickSight, хотя и являются фантастическими инструментами, фокусируются на отчетности, но не позволяют редактировать или добавлять данные на платформы, когда это необходимо, а это означает, что вам потребуются дополнительные решения или программное обеспечение для достижения ваших бизнес-целей.
Такие решения, как Excel, доступны каждому и предоставляют всю необходимую гибкость. Тем не менее, ваши данные разбросаны и не позволяют легко использовать общий источник истины для вашей команды и клиентов, а документы Excel очень легко рассинхронизировать или даже поделиться, что подвергает вашу компанию риску безопасности.
Flask-BDA помогает вам, предоставляя вам средства управления для быстрой и безопасной доставки полнофункциональных приложений в 2–5 раз (2–5 раз) быстрее. Без какой-либо привязки к поставщику или среде.
Flask — это «микрофреймворк» с открытым исходным кодом, написанный Армином Ронахером, который позволяет создавать веб-приложения на Python. Поставка лишь небольшого базового набора функций обеспечивает расширяемую базу, позволяющую разработчикам выбирать, какие дополнительные инструменты им понадобятся для их приложения.
Несмотря на то, что Flask называют микрофреймворком, он хорошо подходит для создания небольших и крупных веб-приложений. Flask использовался в производственных системах такими крупными компаниями, как Twilio, Pinterest, Lyft, LinkedIn и Uber.
Flask-BDA помогает вам быстрее разрабатывать, предоставляя уже существующую структуру приложения Flask, позволяющую:
Автоматически устраняйте утомительные аспекты, замедляющие разработку программного обеспечения.
- Создавайте и управляйте всеми подключениями к базе данных и сложными запросами.
- Безопасность приложений с контролем доступа на основе пользователей и ролей.
- Автоматический аудит каждого действия
Flask-BDA — это платформа с низким уровнем кода (то есть мы поможем вам, написав за вас большой объем кода), которая предоставляет компаниям инструменты для быстрой разработки и развертывания безопасных приложений, которые работают на любом устройстве.
Мы меняем способ создания программного обеспечения, чтобы вы могли быстро создавать и развертывать критически важные приложения любого размера, которые развиваются вместе с вашим бизнесом, экономя ваше время и деньги.
Разработчики могут создавать и развертывать полный спектр приложений — от потребительских приложений до критически важных внутренних бизнес-систем, — призванных помочь разработчикам быстро и эффективно создавать безопасные приложения, поэтому приложения доставляются за недели и даже дни.
Flask-BDA обеспечивает полнофункциональную разработку; Пользовательский интерфейс, бизнес-процессы, пользовательская логика и модели данных для создания кроссплатформенных приложений «из коробки». Предоставление вам каркаса, в который вы можете при необходимости добавить свой собственный код. Без какой-либо блокировки.
Благодаря предварительно настроенным средам разработки мы уменьшаем трудности (и затраты) при выходе на рынок, предоставляя вам возможность выбирать, где и как развертывать.
Flask-BDA — бесплатный и удобный для разработчиков инструмент для разработки приложений с доступным исходным кодом и лицензией, удобной для разработчиков.
Flask-BDA можно использовать совершенно БЕСПЛАТНО для коммерческих и личных проектов.
Однако разработка программного обеспечения всегда является дорогостоящим занятием:
- Вам нужно будет заплатить одному или нескольким разработчикам программного обеспечения, бизнес-аналитикам, дизайнерам, менеджерам проектов и другим членам команды для создания вашего продукта.
- Ваш продукт никогда не будет закончен. Программный проект всегда будет нуждаться в постоянном развитии.
- Когда вы поставляете продукт, ваши конкуренты уже работают над новыми и улучшенными функциями, и вам нужно быть в состоянии оставаться впереди или, по крайней мере, не отставать, иначе пользователи перейдут к вашим конкурентам.
- Как только вы начнете использовать свой продукт, вы и ваша команда подумаете о новых функциях, которые сделают его еще лучше и улучшат ваши процессы.
- Продолжение технического обслуживания. По мере того, как пользователи используют продукт, они найдут способы сломать его, о которых вы даже не подумали, и их необходимо исправить.
Размер проекта | Первоначальная стоимость | Текущая стоимость |
---|---|---|
Небольшие проекты (2–6 недель разработки) | $11 250 | $563 - $1 125 (±10%) / в месяц |
Средние проекты (2 - 4 месяца разработки) | $33 750 | $1 563 - $3 375 (±10%) / в месяц |
Крупномасштабные проекты (6–18 месяцев разработки и более) | $156 250 | $3 375 - $15 625 (±10%) / в месяц |
Размер проекта | Первоначальная стоимость | Текущая стоимость |
---|---|---|
Небольшие проекты (1 - 3 недели разработки) | $3 750 | $188 - $375 (±10%) / в месяц |
Средние проекты (1 - 3 месяца разработки) | $11 250 | $375 - $1 125 (±10%) / в месяц |
Крупномасштабные проекты (2–6 месяцев и более разработки) | $52 084 | $1 125 - $5 208 (±10%) / в месяц |
С Flask-BDA вы НЕ ТЕРЯЕТЕ НИКАКОЙ гибкости «обычной разработки», поскольку она использует стандартизированные шаблоны разработки и проверенные технологии.
Flask-BDA использует множество технологий с открытым исходным кодом и существующие стеки технологий, чтобы вы могли легко найти других разработчиков, использующих те же технологии. В результате вам не придется платить дорогостоящие лицензионные сборы или затраты на окружающую среду, независимо от того, какой доход получает ваша компания или где вы находитесь в своем бизнесе.
Начните с быстрой и простой предварительно настроенной среды разработки за считанные минуты.
Никакой сложной настройки не требуется. Требуется только Python (рекомендуется 3.8.6).
Обновите конфигурации: подключения к базе данных и настройки приложения.
Создавайте свои собственные модули и структуры данных (модель данных), позволяющие использовать разные базы данных.
Автоматически созданный полнофункциональный:
- Страницы
Admin
иMobile
REST APIs
с интерфейсом SwaggerGraphQL API
с интерфейсом GraphiQL, которым легко управлять для каждого модуля.
Настраивайте страницы в соответствии со своими потребностями и легко делитесь ими со своей командой и клиентами.
Напишите свой собственный код в изолированном модуле, чтобы не влиять на другие модули.
Легко интегрируйте модули в разные проекты.
Используйте ту же базу кода для развертывания:
- Рабочий стол
- Интернет
- мобильный
Окружающая среда включает в себя:
- Докер
- Бессерверное использование AWS
- Цифровой океан
- Хероку
- Общий хостинг.
pip
установлен (pip уже должен быть установлен, поскольку он поставляется с последними версиями Python). Если это не так, установите его отсюда: https://pip.pypa.io/en/stable/installing/python -m pip --version
ПРИМЕЧАНИЕ. В этой документации предполагается, что вы используете
pip3
какpip
, поэтому все инструкции написаны с помощьюpip
. Если вы хотите, чтобыpip3
запускался при вызовеpip
из вашего терминала, вы можете создать символическую ссылку наpip3
изpip
:
pip install --upgrade pip
sudo
, например: sudo pip install --upgrade pip
nano ~ /.bash_profile
В файл вставьте следующее:
alias pip= ' pip3 '
alias python= ' python3 '
ПРИМЕЧАНИЕ. Возможно, вам придется удалить Python 2.7 в MacOS, поскольку он предварительно установлен в моих дистрибутивах. Это очень помогло для достижения этой цели:
sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7
sudo rm -rf " /Applications/Python 2.7 "
ls -l /usr/local/bin | grep ' ../Library/Frameworks/Python.framework/Versions/2.7 '
а затем выполните следующую команду, чтобы удалить все ссылки:
cd /usr/local/bin/
ls -l /usr/local/bin | grep ' ../Library/Frameworks/Python.framework/Versions/2.7 ' | awk ' {print $9} ' | tr -d @ | xargs rm
После установки Python и
pip
вам потребуется установить зависимость для правильной работы функций командной строки Flask-BDA:
pip install click
Другие зависимости, которые вы, возможно, захотите установить глобально (но должны запускаться автоматически при создании проекта), включают:
pip install virtualenv
pip install flaskwebgui
pip install pyinstaller
Чтобы приступить к созданию своего первого проекта с помощью Flask-BDA, выполните простые шаги, приведенные ниже, и за считанные минуты создайте собственную предварительно настроенную среду разработки, работающую.
В этом кратком руководстве мы создадим проект под названием
"My Awesome Project"
. Однако вы можете называть проект как угодно.
create_project.py
и запустит его, чтобы помочь вам запустить проект."My Awesome Project"
curl -L https://raw.githubusercontent.com/RyanJulyan/Flask-BDA/main/create_project_git.py --ssl-no-revok -o create_project_git.py
python create_project_git.py --project= " My Awesome Project "
create_project.py
и запустит его, чтобы помочь вам запустить проект."My Awesome Project"
curl -L https://raw.githubusercontent.com/RyanJulyan/Flask-BDA/main/create_project_git.py --ssl-no-revok -o create_project_git.py
python create_project_git.py --project= " My Awesome Project "
Примечание. Если вы не указали допустимое имя проекта, вам будет предложено это сделать:
- При появлении запроса введите название проекта, например:
- Во избежание ошибок убедитесь, что вы заключили название проекта в кавычки, например:
"My Awesome Project"
Invalid Project Name !
Please enter a valid project name :
"My Awesome Project"
Примечание. Вы заметите, что при этом создается папка по тому же пути, что и файл: «create_project_git.py». Эта папка будет написана строчными буквами, из нее будут удалены все специальные символы и заменены пробелы подчеркиваниями, например:
my_awesome_project
Примечание. Во время разработки вы можете захотеть полностью использовать другую ветку или репозиторий. Это может помочь при тестировании или если вы оторвались от основного проекта Flask-BDA.
- Вы можете указать
Owner
,Repo
иBranch
при создании нового проекта.
curl - L https : // raw . githubusercontent . com / RyanJulyan / Flask - BDA / RyanJulyan - Dev / create_project_git . py - - ssl - no - revok - o create_project_git . py
python create_project_git . py - - project = "My Awesome Project" - - owner = "RyanJulyan" - - repo = "Flask-BDA" - - branch = "RyanJulyan-Dev" - - create_venv = True
Примечание. Еще предстоит протестировать все типы соединений!
Подключения к базе данных в Flask-BDA выполняются быстро и легко. У вас может быть одна или несколько баз данных, а разные арендаторы могут иметь свои собственные подключения к базам данных, а также свой тип базы данных (SQLite, MySQL, SQL Server, PostgreSQL).
По умолчанию Flask-BDA имеет настроенную базу данных SQLite. На самом деле это потому, что вам не требуется дополнительная инфраструктура для его настройки и начала работы, что делает SQLite быстрым и простым выбором.
Чтобы изменить базу данных по умолчанию:
flaskbda
), пользователя ( flaskbda_user
) и пароль ( password
).config.py
DATABASE_ENGINE
для SQLite и прокомментируйте DATABASE_ENGINE
mysql.DATABASE_NAME
для SQLite и прокомментируйте MySQL:DATABASE_HOST
DATABASE_PORT
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
SQLALCHEMY_DATABASE_URI
для SQLite и прокомментируйте MySQL SQLALCHEMY_DATABASE_URI
. ##########
# SQLite #
##########
# DATABASE_ENGINE = 'sqlite:///'
# DATABASE_NAME = os.path.join(BASE_DIR, 'databases/sqlite/default.db')
# SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_NAME
#########
# MySQL #
#########
DATABASE_ENGINE = 'mysql://'
DATABASE_HOST = ''
DATABASE_PORT = '1433'
DATABASE_USERNAME = ''
DATABASE_PASSWORD = ''
DATABASE_NAME = ''
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_USERNAME + ':' + DATABASE_PASSWORD + '@' + DATABASE_HOST + ':' + DATABASE_PORT + '/' + DATABASE_NAME
DATABASE_HOST
DATABASE_PORT
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
DATABASE_HOST = 'localhost'
DATABASE_PORT = '3306'
DATABASE_USERNAME = 'flaskbda_user'
DATABASE_PASSWORD = 'password'
DATABASE_NAME = 'flaskbda'
Чтобы изменить базу данных по умолчанию:
flaskbda
), пользователя ( flaskbda_user
) и пароль ( password
).config.py
import pyodbc
.DATABASE_DRIVER
.DATABASE_ENGINE
для SQLite и, например, прокомментируйте DATABASE_ENGINE
SQLServer.DATABASE_NAME
для SQLite и прокомментируйте SQLServer:DATABASE_HOST
DATABASE_PORT
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
SQLALCHEMY_DATABASE_URI
для SQLite и прокомментируйте в try
и except
SQLServer SQLALCHEMY_DATABASE_URI
.Примечание. Если вы используете
SQLEXPRESS
и пытаетесь подключиться к нему. Раскомментируйте переменную SQLServerSQLEXPRESS
. Это будет обработано приtry
иexcept
создания правильногоSQLALCHEMY_DATABASE_URI
Примечание: если вам нужна аутентификация Windows. Раскомментируйте переменную SQLServer
TRUSTED_CONNECTION
. Это будет обработано приtry
иexcept
создания правильногоSQLALCHEMY_DATABASE_URI
##########
# SQLite #
##########
# DATABASE_ENGINE = 'sqlite:///'
# DATABASE_NAME = os.path.join(BASE_DIR, 'databases/sqlite/default.db')
# SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_NAME
#############
# SQLServer #
#############
import pyodbc # noqa: E402
DATABASE_ENGINE = 'mssql+pyodbc://'
# SQLEXPRESS = '\SQLEXPRESS' # for SQLEXPRESS
# TRUSTED_CONNECTION = 'yes' # for windows authentication.
DATABASE_DRIVER = 'SQL+Server+Native+Client+11.0' # for windows authentication.
DATABASE_HOST = ''
DATABASE_PORT = '1433'
DATABASE_USERNAME = ''
DATABASE_PASSWORD = ''
DATABASE_NAME = ''
try :
if SQLEXPRESS == ' \ SQLEXPRESS' :
try :
if TRUSTED_CONNECTION == 'yes' :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_HOST + ':' + DATABASE_PORT + SQLEXPRESS + '/' + DATABASE_NAME + '?trusted_connection=' + TRUSTED_CONNECTION + '&driver=' + DATABASE_DRIVER
else :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_USERNAME + ':' + DATABASE_PASSWORD + '@' + DATABASE_HOST + ':' + DATABASE_PORT + SQLEXPRESS + '/' + DATABASE_NAME + '&driver=' + DATABASE_DRIVER
except NameError :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_USERNAME + ':' + DATABASE_PASSWORD + '@' + DATABASE_HOST + ':' + DATABASE_PORT + SQLEXPRESS + '/' + DATABASE_NAME + '&driver=' + DATABASE_DRIVER
except NameError :
try :
if TRUSTED_CONNECTION == 'yes' :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_HOST + ':' + DATABASE_PORT + '/' + DATABASE_NAME + '?trusted_connection=' + TRUSTED_CONNECTION + '&driver=' + DATABASE_DRIVER
else :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_USERNAME + ':' + DATABASE_PASSWORD + '@' + DATABASE_HOST + ':' + DATABASE_PORT + SQLEXPRESS + '/' + DATABASE_NAME + '&driver=' + DATABASE_DRIVER
except NameError :
SQLALCHEMY_DATABASE_URI = DATABASE_ENGINE + DATABASE_USERNAME + ':' + DATABASE_PASSWORD + '@' + DATABASE_HOST + ':' + DATABASE_PORT + '/' + DATABASE_NAME + '&driver=' + DATABASE_DRIVER
DATABASE_HOST
DATABASE_PORT
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
DATABASE_HOST = 'MSSQLSERVER'
DATABASE_PORT = '1433'
DATABASE_USERNAME = 'flaskbda_user'
DATABASE_PASSWORD = 'password'
DATABASE_NAME = 'flaskbda'
Убедитесь, что для вашего экземпляра MS-SQL настроены права удаленного подключения и включена ссылка (здесь)[https://knowledgebase.apexsql.com/configure-remote-access-connect-remote-sql-server-instance-apexsql-tools/ ]:
Убедитесь, что параметры «Управление конфигурацией SQL-сервера» настроены правильно.
ПРИМЕЧАНИЕ. Для вашей установки потребуется
Client Tools Connectivity
. Если вы не можете найти «Управление конфигурацией SQL-сервера», вам может потребоваться изменить установку, включив в нееClient Tools Connectivity
- если вы не можете найти «», возможно, вам придется вместо этого использовать инструмент «Использовать управление компьютером». чтобы получить к нему доступ.
- похоже, это проблема Windows 10
Мультиарендность — это архитектура программного обеспечения, в которой один экземпляр программного обеспечения работает на сервере и обслуживает несколько арендаторов (клиентов). Мультитенантное программное обеспечение позволяет нескольким независимым экземплярам одного или нескольких приложений работать в общей среде.
Flask-BDA поддерживает вертикально разделенную многопользовательскую среду. Вертикальное секционирование означает, что каждый арендатор имеет отдельную базу данных (и строку подключения к базе данных).
По умолчанию Flask-BDA подключается к арендатору с именем
default
. Это делается с помощью объектаSQLALCHEMY_BINDS
(находится вconfig.py
), который должен содержать конкретные сведения о соединении, необходимые для каждого арендатора. Сведения о подключении по умолчанию объединяются в строку с именемSQLALCHEMY_DATABASE_URI
, которая предназначена для быстрой и простой настройки одного клиента.
Вы можете использовать эту же структуру, однако, если у вас есть несколько клиентов, вы можете быстро добавить их в объект
SQLALCHEMY_BINDS
. Чтобы добавить нового арендатора, просто:
SQLALCHEMY_BINDS
с именем клиента и сведениями о строке подключения. SQLALCHEMY_BINDS = {
"default" : SQLALCHEMY_DATABASE_URI ,
"client1" : 'sqlite:///databases/sqlite/client1.db' ,
}
Теперь вы можете взаимодействовать с изолированной базой данных клиентов, добавив аргумент
organization=
к URL-адресу, например:example.com?organization=client1
, гдеclient1
— это имя, добавленное вами в объектSQLALCHEMY_BINDS
.
Это работает путем перехвата
@app.before_request
вapp/_init_.py
и изменения привязки механизма базы данных с помощьюdb.choose_tenant(g.organization)
изapp/mod_tenancy/multi_tenant.py
с помощью глобальной переменнойg.organization
, которая получает устанавливается путем полученияorganization
аргументов URL. Это позволяет использовать один и тот же код в приложении в базе данных каждого клиента, сохраняя при этом данные отдельно.
Иногда вам необходимо взаимодействовать с разными базами данных в рамках одной функции (особенно при интеграции систем или чтении данных из разных источников).
По умолчанию все контроллеры будут импортированы
MultiBindSQLAlchemy
.
# import multiple bindings
from app . mod_tenancy . multi_bind import MultiBindSQLAlchemy
Под импортом находится закомментированный код, призванный помочь вам быстро реализовать связывание с различными базами данных в одной функции. Сначала необходимо добавить привязку базы данных к объекту
SQLALCHEMY_BINDS
. Обратитесь к изолированным базам данных с той же функциональностью, чтобы лучше понять, как добавлять новые базы данных к объектуSQLALCHEMY_BINDS
.
Затем вы можете создать новый объект, прикрепленный к объекту
db
, следуя структуреdb.<binding>
, например:db.first
, гдеfirst
— это имя, на которое вы хотите ссылаться на привязку в остальной части кода. Затем вы можете присвоить эту переменнуюMultiBindSQLAlchemy
, например:db.first = MultiBindSQLAlchemy('first')
.
Теперь это позволяет вам вызывать собственный код, который позволит вам получить доступ к новой привязке базы данных, а также к основному арендатору в одной функции, например:
db.first.execute(...)
, где вы можете выполнить необработанный код SQL.
db . first = MultiBindSQLAlchemy ( 'first' )
##################################################
## this will only work for the execute function ##
##################################################
db . first . execute (...)
**Примечание: ** это будет работать только для функции
execute
. Существуют некоторые продвинутые методы использования ORM SQLAlchemy, которые можно найти здесь: Учебное пособие по выполнению SQLAlchemy.
Модуль — это автономный компонент, облегчающий управление по мере роста программы. Модули в Flask-BDA помогут вам создать: модель данных, маршруты и связанные функции для управления логикой и представлениями.
Когда вы создаете новый модуль CRUD, все элементы из папки
create_module_template
копируются в каталог приложения и переименовываются в указанное вами имя модуля путем замены всех значенийxyz
на имя вашего модуля и добавления дополнительной информации о модели данных, как описано ниже.
<Path To>/<my_awesome_project>/create_module_json.py
<Path To>/<my_awesome_project>/
— это путь к созданному вами проекту. cd < Path To > / < my_awesome_project > /
python create_module_json . py - - module = Projects
Create new field Name (type the string : 'STOP_CREATING_FIELDS' to exit ): "name"
What datatype is name
Choose one of the following options
( 'String'
, 'Int'
, 'Float'
, 'Numeric'
, 'Text'
, 'Date'
, 'DateTime'
, 'Boolean'
, 'BigInt'
, 'Enum'
, 'JSON'
, 'LargeBinary' ): "String"
String Length ( 1 - 256 ): 256
Is name nullable ( 'True' , 'False' ): False
Is name unique ( 'True' , 'False' ): True
Does the name have a Relationship with another Data Model ? ( 'True' , 'False' ): False
Default value :
Примечание. Этот цикл будет продолжаться до тех пор, пока вы не введете и не отправите точные слова: «STOP_CREATING_FIELDS».
Это позволяет вам быстро и легко создавать несколько полей для вашего модуля.
Приведенные выше поля должны показывать, что разные типы полей взаимодействуют и создают несколько полей.
Примечание. Отношения всегда будут устанавливаться по
id
предоставленной модели.В поле создается ForeignKey, а также ленивая связь между полем
id
, предоставленным моделью.
Create new field Name (type the string : 'STOP_CREATING_FIELDS' to exit ): STOP_CREATING_FIELDS
Create module logic from Data Model ? ( 'True' , 'False' ): True
Примечание. Вы также можете сгенерировать модуль из файла JSON в «app/generated_config/models//models.json», где указано имя модуля, который вы вводите для этого. Откройте и запустите файл:
<Path To>/<my_awesome_project>/create_module.py
* Где<Path To>/<my_awesome_project>/
— это путь к созданному вами проекту * Заполните инструкции, например:
cd < Path To > / < my_awesome_project > /
python create_module . py - - module = projects
Затем будут созданы необходимые файлы и папки, как описано ниже в разделе «Изменения приложения».
Файлы и папки из папки
create_module_template
создаются для модуляProjects
, а затем добавляются в папкуapp
.Это создаст шаблонные представления CRUD администратора, REST API (с массовой вставкой и обновлением), API GraphQL, а также общедоступные представления и логику, которые позволят вам немедленно взаимодействовать с созданным вами модулем.
Из панели администратора вы сможете выполнять следующие действия: создавать, читать, обновлять и удалять («CRUD») для вашего нового модуля.
Общедоступные представления позволяют гостевым пользователям (пользователям, не вошедшим в систему) просматривать предоставленную информацию.
└── `my_awesome_project`
└── app
├── generated_config
│ └── models
│ └── `projects`
│ └── models.json
└── `mod_projects`
├── templates
│ ├── mobile
│ │ └── `projects`
│ │ ├── admin
│ │ │ ├── create.html
│ │ │ ├── edit.html
│ │ │ ├── index.html
│ │ │ └── show.html
│ │ └── public
│ │ └── public_list.html
│ └── `projects`
│ ├── admin
│ │ ├── create.html
│ │ ├── edit.html
│ │ ├── index.html
│ │ └── show.html
│ └── public
│ └── public_list.html
├── api_controllers.py
├── controllers.py
├── forms.py
├── models.py
└── types.py
Создание нового модуля предоставит вам 3 способа взаимодействия с вашей новой системой:
Public
,Admin
,REST API
иGraphQL API
.
Чтобы получить к ним доступ, им потребуется, чтобы приложение работало в среде.
Public
представление — это представление данных, представленных в модуле, без проверки подлинности .
xyz
— имя модуля):../xyz/
public_list
Представления
Admin
представляют собой аутентифицированное представление данных, представленных в модуле.
xyz
— имя модуля):../admin/xyz/
index
../admin/xyz/create
create
../admin/xyz/store
store
../admin/xyz/show/{id}
show
../admin/xyz/edit/{id}
edit
../admin/xyz/update/{id}
update
../admin/xyz/destroy/{id}
destroy
Представления
API
представляют собой список конечных точек REST API, связанной документации и игровой площадки для выполнения.
Flask BDA использует SwaggerUI для представления REST API пользователю/клиенту.
SwaggerUI позволяет любому — будь то ваша команда разработчиков или конечные потребители — визуализировать ресурсы API и взаимодействовать с ними без какой-либо логики реализации. Вместо этого он автоматически генерируется на основе вашей спецификации OpenAPI (ранее известной как Swagger) с визуальной документацией, упрощающей внутреннюю реализацию и использование на стороне клиента.
Чтобы получить доступ к SwaggerUI:
<base_URL>/api/docs
для доступа к REST API SwaggerUI, например: http://localhost:5000/api/docs
.Чтобы получить доступ к REST API без SwaggerUI:
<base_URL>/
../api/xyz
XyzListResource
> get
../api/xyz
XyzListResource
> post
../api/xyz/{id}
XyzResource
> get
../api/xyz/{id}
XyzResource
> update
../api/xyz/{id}
XyzResource
> delete
../api/xyz/bulk
XyzBulkListResource
> post
../api/xyz/bulk
XyzBulkListResource
> update
../api/xyz/aggregate
XyzAggregateResource
> get
Представления
graphql
— это представления GraphiQL, конечные точки API, связанная документация и игровая площадка для выполнения.
Flask BDA использует графен-питон и GraphiQL для представления API GraphQL пользователю/клиенту, предоставляя простой, но расширяемый API, упрощающий жизнь разработчиков.
GraphQL — это язык запросов к данным, предоставляющий альтернативу REST и специальным архитектурам веб-сервисов.
Чтобы получить доступ к GraphiQL:
<base_URL>/graphql
для доступа к GraphiQL, GraphQL API, например: http://localhost:5000/graphql
.Чтобы получить доступ к API GraphQL без GraphiQL:
<base_URL>/
../graphql
mod_graphql
> query
> Query
> all_xyz
../graphql
mod_graphql
> mutation
> Mutation
> createXyz
В настоящее время поддерживается 7 готовых сред (в ближайшее время планируется поддержка большего числа) с инструкциями по настройке каждой из них для Windows / Linux / Mac
, и вы можете запускать их одновременно, если хотите.
Для создания и разработки локального приложения мы используем virtualenv. Инструмент для создания изолированных виртуальных сред Python.
pip install --upgrade pip
cd <Path To>/my_awesome_project
cd < Path To > /my_awesome_project
pip install --upgrade pip
pip install virtualenv
virtualenv venv
venv S cripts a ctivate
pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
set FLASK_APP=app
set FLASK_ENV=development
flask run --port 5000
pip install --upgrade pip
sudo
, например: sudo pip install --upgrade pip
cd < Path To > /my_awesome_project
pip install --upgrade pip
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
export FLASK_APP=app
export FLASK_ENV=development
flask run --port 5000
Некоторые службы общего хостинга предлагают возможность запускать приложения Python на своих серверах. Лично я использовал A2hosting. Их поддержка была потрясающей, а цена за функции — одна из лучших, с которыми я когда-либо сталкивался.
Примечание. Вы не ограничены A2 в качестве варианта общего хостинга. Однако именно здесь я протестировал Flask-BDA и имею опыт загрузки и запуска варианта общего хостинга. Если ваш вариант общего хостинга предлагает аналогичный набор функций, смело используйте их.
Для A2 вам нужно будет настроить свой сервер для запуска приложения Python, которое, например, может потребовать некоторой настройки.
Чтобы ваше пользовательское приложение заработало:
Примечание. В среде
Linux
требованиеpyodbc
по умолчанию не работает. Из-за этого, а также из-за того, что среда является общей, у вас может не быть прав на добавление требований, чтобы она работала, самый простой способ гарантировать, что установка не завершится неудачей, — закомментировать это требование на сервере.
requirements.txt
, найдите pyodbc
и поставьте #
с пробелом перед именем пакета. # pyodbc==4.0.30
requirements.txt
SSH
, в которое вы вошли на предыдущем шаге. pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
Setup Python App
еще раз.Application startup file
на run_shared_server.py
Для создания и развертывания контейнерного приложения мы используем Docker, который помогает разработчикам и командам разработчиков создавать и доставлять приложения. Кроме того, Docker используется для создания и совместного использования контейнерных приложений и микросервисов.
Примечание. Если вы используете Github и у вас установлен docker (подробности об установке см. далее в документации), вы будете получать новый образ каждый раз, когда вы
push
или выполняетеpull_request
на Github, который настроен в файле:docker-image.yml
, однако, если вы хотите сделать это вручную, выполните следующие действия:
cd < Path To > /my_awesome_project
docker build -t flask_app:latest .
docker run -p 5000:5000 flask_app
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
systemctl start docker
cd < Path To > /my_awesome_project
docker build -t flask_app:latest .
docker run -it -p 5000:5000 flask_app
Примечание. Все еще в разработке.
Для создания и развертывания бессерверного приложения мы используем The Serverless Framework, которая обеспечивает бессерверную разработку без каких-либо проблем, позволяя вам легко создавать приложения, которые автоматически масштабируются в недорогой облачной инфраструктуре следующего поколения.
Бессерверная среда — это инструмент с открытым исходным кодом, который обеспечивает простую разработку и развертывание YAML + CLI в AWS, Azure, Google Cloud, Knative и других системах.
Примечание. Возможно, вам придется настроить строки базы данных по умолчанию перед del=polying, поскольку бессерверная функция не поддерживает «SQLite», поскольку функция не сохраняет состояние.
Чтобы обновить строки базы данных, обратитесь к [Config]
npm update -g serverless
npm update -g serverless
choco install serverless
Примечание. Если пакет не устанавливается, возможно, вам придется запустить команду от имени администратора.
нажмите клавишу «Windows», введите «cmd», «щелкните правой кнопкой мыши» на слове «Командная строка» и выберите параметр «Запуск от имени администратора», а затем снова выполните предыдущие шаги.
serverless
cd < Path To > /my_awesome_project
sls plugin install -n serverless-python-requirements
sls plugin install -n serverless-wsgi
serverless deploy
curl -o- -L https://slss.io/install | bash
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
systemctl start docker
cd < Path To > /my_awesome_project
sls plugin install -n serverless-python-requirements
sls plugin install -n serverless-wsgi
serverless deploy
Примечание. Все еще в разработке.
Digital Ocean — это платформа как услуга (PaaS). Разрабатывайте, управляйте и масштабируйте свои приложения на полной облачной платформе DigitalOcean. Digital Ocean предлагает вам простые и предсказуемые цены. Уверенно создавайте и выпускайте решения с помощью масштабируемых вычислительных продуктов в облаке, полностью управляемых баз данных, высокодоступных и масштабируемых вариантов хранения данных и многого другого. Благодаря виртуальным машинам с достаточным объемом памяти, настроенным для размещения и масштабирования приложений и баз данных, Digital Ocean предлагает простые решения сложных проблем.
Чтобы создать и развернуть приложение в Heroku из терминала, вам необходимо:
138.197.67.25
ПРИМЕЧАНИЕ. Если вы не подключались через SSH, вы должны получить
password
по электронной почте, на которую вы зарегистрировали учетную запись для Digital Ocean.
cd < Path To > / < my_awesome_project > /
scp -r < my_awesome_project > root@ < ip_address > :/
ssh root@ < ip_address >
Где
<Path To>/<my_awesome_project>/
— это путь к созданному вами проекту, а<ip_address>
— это капли <ip_address>, например:138.197.67.25
Примечание. Следуйте любым подсказкам, представленным SSH, таким как разрешение доступа с удаленного сервера.
Как только вы входите в систему, вы должны увидеть терминал с:
root@ < droplet_name > :
cd < Path To > / < my_awesome_project > /
chmod +x setup.sh
bash setup.sh
virtualenv venv
source venv/bin/activate
sudo pip install --upgrade pip
sudo pip install --no-cache-dir -r requirements.txt
sudo pip install uwsgi
sudo ufw allow 5000
export FLASK_APP=app
uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi:app
Где
5000
- номер порта
и<droplet_name>
это имя
cd < Path To > / < my_awesome_project > /
scp -r < my_awesome_project > root@ < ip_address > :/
ssh root@ < ip_address >
Где
<Path To>/<my_awesome_project>/
это путь к созданному вами проекту и где<ip_address>
- капли <ip_address>, например:138.197.67.25
Примечание. Следуйте любым подсказкам, представленным SSH, таким как разрешение доступа с удаленного сервера.
Как только вы входите в систему, вы должны увидеть терминал с:
root@ < droplet_name > :
cd < Path To > / < my_awesome_project > /
chmod +x setup.sh
bash setup.sh
virtualenv venv
source venv/bin/activate
sudo pip install --upgrade pip
sudo pip install --no-cache-dir -r requirements.txt
sudo pip install uwsgi
sudo ufw allow 5000
export FLASK_APP=app
uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi:app
Где
5000
- номер порта
и<droplet_name>
это имя
Примечание: все еще находится в стадии разработки
Хероку - это платформа в качестве услуги (Паас). Heroku позволяет вам начать с нулевой приверженности, платить по мере того, как вы не занимаетесь. Разработчики, команды и предприятия всех размеров могут использовать Heroku для развертывания, управления и масштабирования приложений. Независимо от того, создаете ли вы простой прототип или критически важную для бизнеса продукт, полностью управляемая платформа Heroku дает вам простой путь к быстрому доставке приложений.
Чтобы создать и развернуть приложение в Heroku из терминала, вам нужно будет загрузить и установить Heroku CLI. Чтобы проверить установку, вы можете проверить версию Heroku с терминала:
heroku --version
ПРИМЕЧАНИЕ. Убедитесь, что вы изменили подключение к базе данных, поскольку Heroku не предлагает использовать SQLite, поскольку данные могут быть потеряны в файлах. Heroku предлагает бесплатную базу данных Postgres. Посмотрите на их планы и выберите правильный план для вас, так как есть ограничения на различные планы.
cd < Path To > /my_awesome_project
heroku login
<my_awesome_project-flask-bda-app>
, где <my_awesome_project-flask-bda-app>
-это имя, которое вы дали свой проект.heroku create my_awesome_project-flask-bda-app
git push heroku master
<my_awesome_project-flask-bda-app>
это имя, которое вы дали свой проект. cd < Path To > /my_awesome_project
sudo snap install --classic heroku
heroku login
<my_awesome_project-flask-bda-app>
, где <my_awesome_project-flask-bda-app>
-это имя, которое вы дали свой проект.heroku create my_awesome_project-flask-bda-app
git push heroku master
<my_awesome_project-flask-bda-app>
это имя, которое вы дали свой проект. cd < Path To > /my_awesome_project
brew tap heroku/brew && brew install heroku
heroku login
<my_awesome_project-flask-bda-app>
, где <my_awesome_project-flask-bda-app>
-это имя, которое вы дали свой проект.heroku create my_awesome_project-flask-bda-app
git push heroku master
<my_awesome_project-flask-bda-app>
это имя, которое вы дали свой проект. Для нативных мобильных приложений мы используем React-Clive. В частности, мы используем Expo в качестве структуры и платформы для универсальных приложений React. Это набор инструментов и услуг, созданных вокруг нативных и нативных платформ React, которые помогают вам разрабатывать, создавать, развернуть и быстро итерацию на iOS, Android и веб -приложениях из той же кодовой базы JavaScript/TypeScript.
У нас есть предварительные уведомления, так что вам не нужно. Это означает, что вам быстрее и легче начать и работать и работать. Кроме того, мы используем пакет по умолчанию по умолчанию, он позволяет упростить реализацию и подход.
Преимущества включают в себя более быстрые рабочие процессы/процессы построения и тестирования, удаленное тестирование при разработке с обновлениями Over Air (OTA) с изменениями, видимыми при сбережении во время разработки.
Тем не менее, есть некоторые недостатки и ограничения, которые выставляют Экспо и описывает их довольно хорошо. Мы предлагаем просмотреть эти ограничения перед использованием нашего предварительно созданного метода.
Создайте один проект, который работает на всех пользователях.
cd < Path To > /my_awesome_project_mobile_app
npm install -g expo-cli
npm install
cd < Path To > /my_awesome_project_mobile_app
npm install -g expo-cli
npm install
Поскольку Flask BDA не определяет, где вы должны размещать свой веб -сайт, вам нужно сообщить своему мобильному приложению, куда идти.
В примере QuickStart мы создали проект под названием
"My Awesome Project"
. Тем не менее, вы, возможно, назвали проект чем -то другим. Это создало бы папку, в которой имя все в нижнем регистре, разделило все особые символы и заменил пространства на недостатке, например:my_awesome_project
.
Для Mobile мы автоматически создадим отдельную папку
"_mobile_app"
, где префикс папки является именем вашего проекта, например,my_awesome_project_mobile_app
. Это для предотвращения проблем сpackage.json
конфигурацииServerless
.
Если вы все еще находитесь в разработке и/или не выбрали поставщика услуг для хостинга, вы можете использовать: ngrok для создания временного URL общественного развития, который туннели для вашей местной среды. NGROK разоблачает местные серверы, стоящие за NAT и брандмауэрами в общедоступный интернет, над безопасными туннелями. Это позволяет вам демонстрировать веб -сайты на публичном URL и тестировать мобильные приложения, подключенные к местному бэкэнду без развертывания.
Запустите локальный сервер разработки, следуя инструкциям по локальной среде
Если вы не зарегистрировались в NGROK раньше:
Если вы уже зарегистрировались, но не установите:
После открытия терминала NGROK создайте туннель с вашего локального сервера до NGROK
5000
по умолчанию, замените номер после http
чтобы позволить создавать правильный туннель. ngrok http 5000
ngrok by @inconshreveable
(Ctrl+C to quit)
Session Status online
Session Expires 1 hour, 59 minutes
Version 2.3.40
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://573d4ec93267.ngrok.io - > http://localhost:5000
Forwarding https://573d4ec93267.ngrok.io - > http://localhost:5000
Connections
ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
ПРИМЕЧАНИЕ. Бесплатная версия поддерживает этот сервер только в течение 2 часов, поэтому вам может потребоваться следовать этому процессу в будущем, и если вы подтолкните этот URL -адрес к своему «репо», она может не работать для следующего человека.
my_awesome_project_mobile_app
app.json
и редактируйте строку 2 "server_base_url": "https://github.com/RyanJulyan/Flask-BDA"
, заменив https://github.com/RyanJulyan/Flask-BDA
на свои собственные имя сервера.expo
на свой собственный мобильный телефон, выполнив поиск «Expo» в магазине Apple или Google Play:iOS
перейти к: https://apps.apple.com/apple-store/id982107779Android
перейдите по адресу: https://play.google.com/store/apps/details?id=host.exp.exponentПосле того, как приложение установлено на вашем телефоне, вы можете запустить сервер разработки на своей локальной машине.
cd < Path To > /my_awesome_project_mobile_app
expo start
cd < Path To > /my_awesome_project_mobile_app
expo start
Это откроет веб -страницу с QR -кодом на ней. Это позволит вам использовать приложение Expo, если вы находитесь на Android или используете камеру, если вы находитесь в iOS, чтобы сканировать код и открыть ваше приложение непосредственно с сервера разработки.
ПРИМЕЧАНИЕ. Если вы хотите, чтобы люди не были в вашей сети, чтобы иметь возможность отсканировать и проверить приложение удаленно, нажмите кнопку
tunnel
в таблице над QR -кодом.
Часть рекомендаций заключается в том, чтобы убедиться, что изображения оптимизированы. Для этой выставки рекомендовали пакет Exepo-Optimize, который может помочь с оптимизацией изображений. Кроме того, оптимизация изображений может улучшить ваше собственное приложение TTI (или время-интерфейс), что означает меньше времени на экранах Splash и более быстрой доставке по сравнению с плохими сетевыми подключениями.
cd < Path To > /my_awesome_project_mobile_app
npm install -g sharp-cli
npx expo-optimize --quality 0.9
cd < Path To > /my_awesome_project_mobile_app
npm install -g sharp-cli
npx expo-optimize --quality 0.9
Чтобы создать и разработать настольное приложение, мы используем Flaskwebgui. Инструмент для создания и запуска веб -приложения Flask в хромированной обертке. Чтобы распределить настольное приложение, мы используем Pyinstaller. Pyinstaller Freezes (Packages) Приложения Python в автономные исполняемые файлы под Windows, GNU/Linux, Mac OS X, FreeBSD, Solaris и AIX.
Каждое развертывание должно быть создано на конкретной платформе, которую вы хотите запустить. Мы создали сценарии, которые позволили бы вам управлять этими развертываниями, помещая папки
build
иdist
в родительские папки для соответствующей платформы. Эти папки будут префикс с помощьюdesktop_
с последующей платформой. Это сделано исключительно для того, чтобы вы могли управлять процессами распространения и сборки для конкретных платформ, а не перезаписать их при создании на разных платформах.
Чтобы позволить экспорту на рабочий стол правильно работать, нам требуется некоторые изменения кода. По умолчанию Flask-BDA предназначена для разработки в Интернете и мобильных устройствах, и мы внедрили лимитером ставок на сайте. К сожалению, вам требуется сервер для оценки ограничения, и, поскольку вы экспортируете систему в настольное приложение, он не запускает сервер.
Таким образом, вам нужно удалить все ссылки на ограничитель. Их можно найти в
app/__init__.py
. Для этого откройте файл в текстовом редакторе и прокомментируйте следующие строки:
# from flask_limiter import Limiter
# from flask_limiter.util import get_remote_address
# limiter = Limiter(
# app,
# key_func=get_remote_address,
# default_limits=app.config['DEFAULT_LIMITS']
# )
Примечание. Если вы добавили пользовательский ограничитель, найдите
@limiter.limit
, который будет найден в ваших контроллерах. Вам нужно будет прокомментировать все эти ссылки и импортные ссылки, например:from app import limiter
Это позволит вам экспортировать приложение в качестве исполняемого файла настольного компьютера без ошибок.
pip install --upgrade pip
cd <Path To>/my_awesome_project
cd < Path To > /my_awesome_project
pip install --upgrade pip
pip install virtualenv
virtualenv venv
venv S cripts a ctivate
pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
python create_desktop_installer_windows.py
pip install --upgrade pip
sudo
, например: sudo pip install --upgrade pip
cd < Path To > /my_awesome_project
pip install --upgrade pip
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
python create_desktop_installer_lunix.py
pip install --upgrade pip
sudo
, например: sudo pip install --upgrade pip
cd < Path To > /my_awesome_project
pip install --upgrade pip
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
python create_desktop_installer_mac.py
Это откроет максимизированное окно, которое будет работать как обычное приложение для рабочего стола. Это будет использовать локально установленную Chrome Browser для обслуживания контента.
По умолчанию это приложение будет подано в порту
7000
. Тем не менее, вы можете редактировать порт в файлеrun_desktop.py
, если это противоречит любым существующим приложениям.
Если вы включите в свой проект дополнительные пакеты Python, не забудьте запустить
pip freeze
из вашего терминала, чтобы убедиться, что вы получите правильные пакеты для развертывания
pip freeze > requirements.txt
Примечание. Предполагается, что вы устанавливаете и заморозили дополнительные пакеты Python из виртуальной среды, а не во всем мире. Это сохраняет ваши
requirements.txt
небольшими и ограниченными пакетами, которые вы используете в своем конкретном проекте.
Flask BDA использует Swaggerui по умолчанию, чтобы помочь и представить API пользователю/клиенту.
Swaggerui позволяет кому -либо - будь то ваша команда разработчиков или ваши конечные потребители - визуализировать и взаимодействовать с ресурсами API, не имея никакой логики реализации. Вместо этого он автоматически генерируется из вашей спецификации OpenAPI (ранее известной как Swagger), причем визуальная документация облегчает обратную реализацию и потребление на стороне клиента.
Чтобы получить доступ к Swaggerui:
<base_URL>/api/docs
, чтобы получить доступ к API Swaggerui, например: http://localhost:5000/api/docs
Многие разработчики предпочтут почтальона над Swaggerui, чтобы проверить и интегрировать API с их кодом. Мы помогли, предоставив прямой экспорт коллекции для почтальона.
Чтобы импортировать коллекцию на почтальоне:
Import...
(Ctrl+O)Link
на вкладках<base_URL>/api/postman
, например: http://localhost:5000/api/postman
http://localhost:5000/swagger.json
сгенерированный <base_URL>/aswagger.json
https://learning.postman.com/docs/getting-started/importing-and-exporting-data/#converting-postman-collections-from-v1-to-v2
npm install -g postman-collection-transformer
postman-collection-transformer convert -i <path to the input Postman collection file> -o <path to the downloaded Postman file> -j 1.0.0 -p 2.0.0 -P
<path to the input Postman collection file>
и <path to the downloaded Postman file>
являются физическими путями файла на вашей локальной машине.Continue
Import
Это импортирует коллекцию почтальона, которая станет доступной на левой стороне в виде папки (с подпаски из каждой из созданных вами конечных точек).
Вы можете генерировать код для множества различных лайн и фреймворков, используя почтальон. Эти языки включают, но не ограничиваются:
Позволяя интегрировать свой недавно созданный API с существующими проектами
Иногда вам нужно делать внешние запросы (например, внешний API). Вы можете подойти к этому, используя запросы AJAX, но иногда вам нужно сделать эти запросы со стороны сервера, например, если вы хотите автоматически обновлять валютные преобразования. Если вы хотите получить доступ к внешним API через сервер, вы не хотите полагаться на то, что пользователь активно участвует на веб -странице, чтобы отправить команду. Вместо этого вы хотите, чтобы сервер имел возможность активировать этот комментарий. Чтобы достичь этого, мы используем модуль запросов.
import requests
requests . methodname ( params )
import requests
params = { "model" : "Mustang" }
x = requests . get ( 'https://w3schools.com/python/demopage.php' , params = params )
print ( x . status_code )
print ( x . text )
import requests
data = { "Name" : "Example" }
headers = { "Authorization" : "Bearer <token>" }
x = requests . post ( 'https://w3schools.com/python/demopage.php' , data = data , headers = headers )
print ( x . status_code )
print ( x . text )
import requests
import json
data = { "Name" : "Example" }
headers = { "Authorization" : "Bearer <token>" }
x = requests . post ( 'https://w3schools.com/python/demopage.php' , json = data , headers = headers )
print ( x . status_code )
print ( x . text )
# use this to load JSON returned as a python dictionary
return_data = json . loads ( x . text )
import requests
data = { "Name" : "Example" }
headers = { "Authorization" : "Bearer <token>" }
x = requests . put ( 'https://w3schools.com/python/demopage.php' , data = data , headers = headers )
print ( x . status_code )
print ( x . text )
import requests
import json
data = { "Name" : "Example" }
headers = { "Authorization" : "Bearer <token>" }
x = requests . put ( 'https://w3schools.com/python/demopage.php' , json = data , headers = headers )
print ( x . status_code )
print ( x . text )
# use this to load JSON returned as a python dictionary
return_data = json . loads ( x . text )
import requests
x = requests . delete ( 'https://w3schools.com/python/demopage.php' )
print ( x . status_code )
print ( x . text )
AJAX Запросы, обычно HTTP-запрос, выполненный (браузер-клиент) в JavaScript, который использует XML/JSON для запроса данных и/или ответных данных из внутренней или внешней системы. Запросы AJAX выполняются с использованием </> htmx по умолчанию.
HTMX-это библиотека без зависимостей, которая позволяет вам получить доступ к AJAX, CSS-переходам, веб-окетам и серверным событиям непосредственно в HTML, используя атрибуты, чтобы вы могли создавать современные пользовательские интерфейсы с простотой и мощностью гипертекста. Для получения подробной информации о том, как использовать HTMX, пожалуйста, обратитесь к документам и для полной ссылки по функциональности, см. Https://htmx.org/reference/
Вы можете использовать HTMX для реализации многих общих шаблонов UX, таких как Active Search:
< input type =" text " name =" q "
hx-get =" /trigger_delay "
hx-trigger =" keyup changed delay:500ms "
hx-target =" #search-results "
placeholder =" Search... " />
< div id =" search-results " > </ div >
Этот вход с именем Q выпустит запрос на /trigger_delay
500 миллисекунд после события ключа, если ввод был изменен, и вставляет результаты в DIV с идентификационными поисковыми ресторанами.
Несмотря на преимущества симметричного шифрования, в этом методе существует недостаток, который позволяет несанкционированным людям получить доступ к секретным ключам сообщения.
Одним из наиболее эффективных способов предотвращения несанкционированного доступа к секретным ключам сообщения является выполнение односторонней функции, такой как алгоритм Diffie-Hellman. Этот метод только позволяет отправителю и получателю расшифровать сообщение.
Односторонние функции обычно реализуются с использованием типа алгоритма, который позволяет им вычислять выход для каждого полученного входа. Тем не менее, этот метод невозможно получить точный результат из случайного ключа.
Тестирование является жизненно важной частью обеспечения успешного пробега проекта
Есть 3 аспекта тестирования, предоставленных в Flask BDA:
Примечание. Чтобы вручную запустить Python
unittest
, убедитесь, что вы установили локальные среды
cd < Path To > /my_awesome_project
venv S cripts a ctivate
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 . --count --exit-zero --max-complexity=11 --max-line-length=127 --statistics
cd < Path To > /my_awesome_project
source venv/bin/activate
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
Примечание. Чтобы вручную запустить Python
unittest
, убедитесь, что вы установили локальные среды
cd < Path To > /my_awesome_project
venv S cripts a ctivate
python -m unittest discover
cd < Path To > /my_awesome_project
venv/bin/activate
python -m unittest discover
Запуск и настройка одного файла
Проект Starter Flask, который создает структуру папки проекта с
992px
500px
@mobile_template
, позволяя адаптировать виды шаблонов для лучшего мобильного опыта, если это необходимо.{% if request.MOBILE %}True{% else %}False{% endif %}
config.py
для быстрого доступа и управления переменными среды и среды и SEO по умолчанию по умолчаниюconfig.py
Создайте пользовательские файлы и папки модуля, которые вписываются в структуру проекта Flask из файла create_module.py
с помощью подсказок для создания следующего:
public_list
index
create
store
show
edit
update
destroy
get
post
get
update
delete
before
и after
изменений на event listeners
модели данных для:Insert
Update
Delete
public_list
index
create
store
show
edit
update
destroy
get
post
get
update
delete
../API/XYZ/Bpost
update
]get
public_list.html
(списки элементы)index.html
(списки элементы)create.html
(форма с одним элементом)show.html
(один элемент)edit.html
(форма с одним элементом)api/docs
(URL)Поддержка браузера (последняя 1 крупная версия не мертва)
└── `project_name`
├── .github
│ └── workflows
│ ├── docker-image.yml
│ └── run_tests.yml
├── app
│ ├── generated_config
│ │ ├── model_editor
│ │ └── models
│ │ ├── hierarchies
│ │ │ └── models.json
│ │ └── organisations
│ │ └── models.json
│ ├── mod_audit
│ │ ├── __init__.py
│ │ ├── controllers.py
│ │ └── models.py
│ ├── mod_users
│ │ ├── templates
│ │ │ ├── mobile
│ │ │ │ └── auth
│ │ │ │ ├── admin
│ │ │ │ │ ├── create.html
│ │ │ │ │ ├── edit.html
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── show.html
│ │ │ │ └── public
│ │ │ │ └── public_list.html
│ │ │ ├── email
│ │ │ │ ├── activate.html
│ │ │ │ └── reset.html
│ │ │ └── users
│ │ │ ├── admin
│ │ │ │ ├── create.html
│ │ │ │ ├── edit.html
│ │ │ │ ├── index.html
│ │ │ │ └── show.html
│ │ │ └── public
│ │ │ └── public_list.html
│ │ ├── __init__.py
│ │ ├── controllers.py
│ │ ├── forms.py
│ │ └── models.py
│ ├── mod_email
│ │ ├── __init__.py
│ │ ├── controllers.py
│ │ └── models.py
│ ├── mod_file_upload
│ │ ├── templates
│ │ │ └── file_upload
│ │ │ └── upload.html
│ │ ├── __init__.py
│ │ ├── controllers.py
│ │ ├── forms.py
│ │ └── models.py
│ ├── static
│ │ ├── css
│ │ ├── images
│ │ ├── js
│ │ ├── manifest.json
│ │ └── sw.js
│ ├── templates
│ │ ├── admin
│ │ │ └── index.html
│ │ ├── email
│ │ │ └── auth
│ │ │ ├── activate.html
│ │ │ └── reset.html
│ │ ├── mobile
│ │ ├── public
│ │ │ └── index.html
│ │ ├── 403.html
│ │ ├── 404.html
│ │ └── index.html
│ └── __init__.py
├── create_module_template
│ ├── generated_config
│ │ └── models
│ │ └── xyz
│ │ └── models.json
│ └── mod_xyz
│ ├── templates
│ │ ├── mobile
│ │ │ └── xyz
│ │ │ ├── admin
│ │ │ │ ├── create.html
│ │ │ │ ├── edit.html
│ │ │ │ ├── index.html
│ │ │ │ └── show.html
│ │ │ └── public
│ │ │ └── public_list.html
│ │ └── xyz
│ │ ├── admin
│ │ │ ├── create.html
│ │ │ ├── edit.html
│ │ │ ├── index.html
│ │ │ └── show.html
│ │ └── public
│ │ └── public_list.html
│ ├── api_controllers.py
│ ├── controllers.py
│ ├── forms.py
│ └── models.py
├── databases
│ └── sqlite
│ ├── core.db
│ └── default.db
├── .dockerignore
├── .gitignore
├── config.py
├── create_all_models_json.py
├── create_desktop_installer_lunix.py
├── create_desktop_installer_mac.py
├── create_desktop_installer_windows.py
├── create_module.py
├── create_module_json.py
├── Dockerfile
├── FLASK-BDA LICENSE
├── LICENSE
├── package.json
├── package-lock.json
├── Procfile
├── README.md
├── requirements.txt
├── run.py
├── run_desktop.py
├── run_shared_server.py
└── serverless.yml
Модуль является частью программы. Программы состоят из одного или нескольких независимо разработанных модулей, которые при совокупности создают программу.
Модуль является автономным компонентом, который облегчает управление по мере роста программы.
Модули в Flask-BDA помогут вам создать: модель данных, маршруты и связанные функции для управления логикой и представлениями
Контроллеры могут группировать связанные с ним логику обработки запросов в один класс. Например, класс UserController может обрабатывать все входящие запросы, связанные с пользователями, включая отображение, создание, обновление и удаление пользователей.
Создать, читать, обновить и удалить ("Crud")
Linting - это автоматическая проверка вашего исходного кода для программных и стилистических ошибок. Это делается с использованием инструмента Lint (иначе известного как Linter). Инструмент Lint - это основной статический анализатор кода.
Lint, или Linter, представляет собой статический инструмент для анализа кода, используемый для помещения ошибок программирования, ошибок, стилистических ошибок и подозрительных конструкций.
В компьютерном программировании модульное тестирование - это метод тестирования программного обеспечения, с помощью которого отдельные единицы исходного кода - предложения одного или нескольких модулей компьютерной программы вместе с соответствующими управляющими данными, процедурами использования и рабочими процедурами - протестируются, чтобы определить, подходят ли они для использования .
Платформа разработки с низким кодом предоставляет среду разработки для создания прикладного программного обеспечения через программные или графические пользовательские интерфейсы и конфигурации вместо традиционного компьютерного программирования ручной кодировки.
Мы были бы рады, если бы вы внесли свой вклад в проект одним или всеми этими способами:
Просмотреть информацию о лицензии для Python 3. (Https://docs.python.org/3.8/license.html) и другие юридические соглашения (https://www.python.org/about/legal/)
Просмотреть информацию о лицензии для Docker. (https://www.docker.com/legal/components-licenses) и другие юридические соглашения (https://www.docker.com/legal)
Как и во всех изображениях Docker, они, вероятно, также содержат другое программное обеспечение, которое может находиться под другими лицензиями (такими как Bash и т. Д., Из базового распределения, наряду с любыми прямыми или косвенными зависимостями основного программного обеспечения).
Некоторая дополнительная информация о лицензии, которая может быть выявлена автоматической, может быть найдена в питоне/ каталоге репозитория репо-инфу.
Что касается любого предварительно созданного использования изображения, то ответственность пользователя изображения состоит в том, чтобы любое использование этого изображения соответствует любым соответствующим лицензиям для всех программных обеспечений, содержащихся внутри.
Просмотреть информацию о лицензии для без сервера Framework и других юридических соглашений (https://app.serverless.com/legal/terms).
Пользователь несет ответственность за то, чтобы придерживаться политики приемлемого использования (https://app.serverless.com/legal/aup)
Просмотреть информацию о лицензии для Expo Framework и других юридических соглашений (https://github.com/expo/expo/blob/master/license).
Flask-BDA создается и распространяется по лицензии Flask-BDA, удобной для разработчиков. Лицензия Flask-BDA получена из популярной лицензии Apache 2.0.
Лицензия Flask-BDA является юридическим требованием для вас или вашей компании использовать и распространять Flask-BDA и производные работ, такие как приложения, которые вы вносите с собой. Ваше приложение или проект могут иметь другую лицензию, но она все еще должна соблюдать оригинал.
Лицензия и уведомление об авторском праве включение
Лицензия Flask-BDA требует, чтобы вы включили лицензию и уведомление об авторском праве со всеми копиями Flask-BDA и в любую производную работу, созданную с использованием Flask-BDA. Вы должны решить, как вы хотите распространить лицензию и уведомление. Ниже приведены некоторые примеры того, как это можно сделать:
Copyright 2021 Flask-BDA, Ryan Julyan, лицензированный в соответствии с лицензией Flask-BDA 0.1 («Лицензия»); Вы не можете использовать Flask-BDA
кроме как в соответствии с лицензией. Вы можете получить копию лицензии, по адресу https://github.com/RyanJulyan/Flask-BDA/blob/main/LICENSE
если не требуется применимый закон или согласовано в письменной форме, программное обеспечение, распределенное по лицензии, распределяется по « Как «основы, без каких -либо гарантий или условий, явных или подразумеваемых. См. Лицензию для конкретного языка, регулирующих разрешения и ограничения по лицензии.