Catatan: Masih dalam Pengembangan!
Versi saat ini: 0.0.0
Beta
Flask-BDA masih dalam pengembangan awal dan sedang diuji dengan versi Python 3.8.6.
Peta jalan saat ini dan rencana proyek tingkat tinggi: https://trello.com/b/uu4HNPBh/flask-bda-features-roadmap
Flask-BDA akan mengikuti pembuatan versi semantik untuk rilisnya, dengan skema {major}.{minor}.{patch}
untuk nomor versi, di mana:
Penghentian akan dipertahankan setidaknya untuk 3 versi minor, setelah versi 0.0.1
Solusi lain seperti Tableau, Power BI, dan Amazon QuickSight, meskipun merupakan alat yang luar biasa, fokus pada pelaporan tetapi tidak memungkinkan Anda mengedit atau menambahkan data ke platform saat diperlukan, yang berarti Anda memerlukan solusi atau perangkat lunak tambahan untuk mencapai tujuan bisnis Anda
Solusi seperti Excel dapat diakses oleh semua orang dan memberi Anda semua fleksibilitas yang mungkin Anda perlukan. Namun, data Anda tersebar dan tidak memungkinkan adanya sumber kebenaran bersama untuk tim dan klien Anda, dan dokumen excel sangat mudah menjadi tidak sinkron atau bahkan dibagikan, sehingga membuka risiko keamanan bagi perusahaan Anda.
Flask-BDA membantu Anda dengan memberi Anda kontrol untuk menghadirkan aplikasi Full-stack yang cepat, aman, 2-5x (2-5 kali) lebih cepat. Tanpa adanya penguncian vendor atau lingkungan.
Flask adalah "kerangka mikro" sumber terbuka yang ditulis oleh Armin Ronacher yang memungkinkan Anda membangun aplikasi web dengan Python. Pengiriman hanya sejumlah kecil fitur inti menyediakan basis yang dapat diperluas yang memungkinkan pengembang memilih alat tambahan apa yang mereka perlukan untuk aplikasi mereka.
Meskipun disebut micro-framework, Flask sangat cocok untuk membangun aplikasi web kecil dan besar. Flask telah digunakan dalam sistem produksi oleh perusahaan besar seperti Twilio, Pinterest, Lyft, LinkedIn, dan Uber.
Flask-BDA membantu Anda berkembang lebih cepat dengan menyediakan struktur aplikasi flask yang sudah ada sebelumnya yang memungkinkan Anda untuk:
Secara otomatis menangani aspek-aspek membosankan yang memperlambat pengembangan perangkat lunak
- Buat & kelola semua koneksi database dan kueri kompleks.
- Keamanan aplikasi dengan kontrol akses berbasis pengguna dan peran
- Audit otomatis pada setiap tindakan
Flask-BDA adalah platform berkode rendah (artinya kami akan membantu Anda dengan menulis banyak kode untuk Anda) yang menyediakan alat bagi perusahaan untuk dengan cepat mengembangkan dan menerapkan aplikasi aman yang berjalan di perangkat apa pun.
Kami mengubah cara perangkat lunak dibangun sehingga Anda dapat dengan cepat membuat dan menerapkan aplikasi penting dalam ukuran apa pun yang berkembang seiring bisnis Anda sehingga menghemat waktu & uang Anda.
Pengembang dapat membangun dan menerapkan berbagai macam aplikasi - mulai dari aplikasi konsumen hingga sistem bisnis internal yang penting - yang dirancang untuk membantu pengembang menghadirkan aplikasi aman dengan cepat dan efisien, sehingga aplikasi dapat dikirimkan dalam hitungan minggu atau bahkan hari.
Flask-BDA menyediakan pengembangan Full-stack dari; UI, proses bisnis, logika kustom, dan model data untuk membuat aplikasi lintas platform secara langsung. Memberi Anda perancah sehingga Anda dapat menambahkan kode khusus Anda sendiri bila diperlukan. Tanpa pernah ada penguncian.
Dengan lingkungan pengembangan yang telah dikonfigurasi sebelumnya, kami mengurangi kesulitan (dan biaya) untuk memasuki pasar, memberi Anda fleksibilitas untuk memilih di mana dan bagaimana menerapkannya.
Gratis dan Ramah Pengembang, Flask-BDA adalah alat pengembangan aplikasi yang dapat digunakan secara gratis dan tersedia dari sumber dengan lisensi yang ramah pengembang.
Flask-BDA sepenuhnya GRATIS untuk digunakan pada proyek komersial dan pribadi.
Namun, pengembangan perangkat lunak selalu merupakan usaha yang mahal:
- Anda perlu membayar satu atau beberapa Pengembang Perangkat Lunak, Analis Bisnis, Desainer, Manajer Proyek, dan anggota tim lainnya untuk membangun produk Anda.
- Produk Anda tidak pernah selesai. Sebuah proyek perangkat lunak akan selalu membutuhkan pengembangan berkelanjutan.
- Saat Anda mengirimkan produk, pesaing Anda sudah mengembangkan fitur-fitur baru dan lebih baik, dan Anda harus mampu menjadi yang terdepan atau setidaknya mengikuti, atau pengguna akan berpindah ke pesaing Anda.
- Setelah Anda mulai menggunakan produk, Anda dan tim Anda akan memikirkan fitur-fitur baru yang akan menjadikannya lebih baik dan meningkatkan proses Anda.
- Pemeliharaan lanjutan. Saat pengguna menggunakan produk, mereka akan menemukan cara untuk memecahkannya yang belum terpikirkan oleh Anda, dan hal tersebut perlu diperbaiki.
Ukuran proyek | Biaya awal | Biaya berkelanjutan |
---|---|---|
Proyek berukuran kecil (2 - 6 minggu pengembangan) | $11.250 | $563 - $1 125 (±10%) / per bulan |
Proyek skala menengah (pengembangan 2 - 4 bulan) | $33.750 | $1.563 - $3.375 (±10%) / per bulan |
Proyek berukuran besar (pengembangan 6 - 18 bulan, atau lebih lama) | $156.250 | $3.375 - $15.625 (±10%) / per bulan |
Ukuran proyek | Biaya awal | Biaya berkelanjutan |
---|---|---|
Proyek berukuran kecil (1 - 3 minggu pengembangan) | $3750 | $188 - $375 (±10%) / per bulan |
Proyek skala menengah (1 - 3 bulan pengembangan) | $11.250 | $375 - $1 125 (±10%) / per bulan |
Proyek berukuran besar (pengembangan 2 - 6 bulan, atau lebih lama) | $52.084 | $1 125 - $5 208 (±10%) / per bulan |
Dengan Flask-BDA, Anda TIDAK KEHILANGAN fleksibilitas "Perkembangan Normal" karena menggunakan pola pengembangan standar dan teknologi yang telah teruji.
Flask-BDA menggunakan banyak teknologi Open Source dan memanfaatkan tumpukan teknologi yang ada sehingga Anda dapat dengan mudah menemukan pengembang lain yang menggunakan teknologi yang sama. Hasilnya, Anda tidak perlu membayar biaya lisensi atau biaya lingkungan yang mahal, terlepas dari berapa banyak pendapatan yang diperoleh perusahaan Anda atau di mana Anda menjalankan bisnis.
Mulailah Anda dengan lingkungan pengembangan pra-konfigurasi yang cepat dan mudah dalam hitungan menit.
Tidak diperlukan pengaturan yang rumit. Hanya python (disarankan 3.8.6) yang diperlukan.
Perbarui konfigurasi Anda: Koneksi database dan pengaturan aplikasi.
Buat modul dan struktur data Anda sendiri (model data) yang memungkinkan Anda menggunakan database yang berbeda.
Fungsi penuh yang dihasilkan secara otomatis:
- Halaman
Admin
danMobile
REST APIs
dengan front-end SwaggerGraphQL API
dengan front-end GraphiQL mudah dikelola per modul.
Konfigurasikan halaman sesuai kebutuhan spesifik Anda dan bagikan dengan mudah kepada tim dan klien Anda.
Tulis kode khusus Anda sendiri dalam modul yang terisolasi, sehingga Anda tidak memengaruhi modul lain,
Integrasikan modul dengan mudah di berbagai proyek.
Gunakan basis kode yang sama untuk diterapkan ke:
- Desktop
- jaring
- Seluler
Lingkungan meliputi:
- Buruh pelabuhan
- AWS Tanpa Server
- Samudera Digital
- Pahlawanku
- Hosting bersama.
pip
sudah terinstal (pip seharusnya sudah terinstal karena dilengkapi dengan versi python terbaru) jika belum, silakan instal dari sini: https://pip.pypa.io/en/stable/installing/python -m pip --version
CATATAN: Dokumentasi ini mengasumsikan bahwa Anda menjalankan
pip3
sebagaipip
, karena itu semua instruksi ditulis denganpip
. Jika Anda ingin menjalankanpip3
saat Anda memanggilpip
, dari terminal Anda, Anda dapat membuat symlink kepip3
daripip
:
pip install --upgrade pip
sudo
misalnya: sudo pip install --upgrade pip
nano ~ /.bash_profile
Di file, tempelkan yang berikut ini:
alias pip= ' pip3 '
alias python= ' python3 '
CATATAN: Anda mungkin perlu menghapus python 2.7 di MacOS karena sudah diinstal sebelumnya di distribusi saya, hal ini sangat membantu untuk mencapai ini:
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 '
lalu jalankan perintah berikut untuk menghapus semua tautan:
cd /usr/local/bin/
ls -l /usr/local/bin | grep ' ../Library/Frameworks/Python.framework/Versions/2.7 ' | awk ' {print $9} ' | tr -d @ | xargs rm
Setelah Anda menginstal Python dan
pip
, Anda perlu menginstal dependensi agar fungsi baris perintah Flask-BDA dapat berjalan dengan benar:
pip install click
Dependensi lain yang mungkin ingin Anda instal secara global (tetapi harus dijalankan secara otomatis saat Anda membuat proyek) meliputi:
pip install virtualenv
pip install flaskwebgui
pip install pyinstaller
Untuk mulai membangun proyek pertama Anda dengan Flask-BDA, ikuti langkah-langkah sederhana di bawah ini untuk membuat lingkungan pengembangan pra-konfigurasi Anda sendiri dan berjalan dalam hitungan menit.
Dalam mulai cepat ini, kita akan membuat proyek bernama
"My Awesome Project"
. Namun, Anda dapat menyebut proyek tersebut apa pun yang Anda inginkan.
create_project.py
yang diperlukan dan menjalankannya untuk membantu Anda memulai sebuah proyek"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
yang diperlukan dan menjalankannya untuk membantu Anda memulai sebuah proyek"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 "
Catatan: Jika Anda tidak mengisi nama proyek yang valid, Anda akan diminta untuk melakukannya:
- Isikan nama proyek Anda saat diminta, misalnya:
- Harap pastikan Anda memberi tanda kutip di sekitar nama proyek Anda untuk mencegah kesalahan, misalnya:
"My Awesome Project"
Invalid Project Name !
Please enter a valid project name :
"My Awesome Project"
Catatan: Anda akan melihat ini membuat folder di jalur yang sama dengan file: "create_project_git.py". Folder ini akan menggunakan huruf kecil dan akan menghapus semua karakter khusus dan mengganti spasi dengan garis bawah, misalnya:
my_awesome_project
Catatan: Selama pengembangan, Anda mungkin ingin menggunakan cabang atau repo lain sepenuhnya. Ini dapat membantu dalam pengujian atau jika Anda telah memisahkan diri dari proyek inti Flask-BDA.
- Anda dapat menentukan
Owner
,Repo
danBranch
saat membuat proyek baru.
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
Catatan: Masih harus diuji untuk semua jenis koneksi!
Koneksi database cepat dan mudah di Flask-BDA. Anda dapat memiliki 1 atau beberapa database, dan penyewa yang berbeda dapat memiliki koneksi database mereka sendiri serta tipe database mereka sendiri (SQLite, MySQL, SQL Server, PostgreSQL)
Secara default, Flask-BDA memiliki pengaturan database SQLite. Ini benar-benar karena Anda tidak memerlukan infrastruktur tambahan untuk menyiapkan dan menjalankannya, menjadikan SQLite pilihan yang cepat dan mudah.
Untuk mengubah database default:
flaskbda
), Pengguna ( flaskbda_user
) dan Kata Sandi ( password
)config.py
DATABASE_ENGINE
untuk SQLite, dan beri komentar di mysql DATABASE_ENGINE
.DATABASE_NAME
untuk SQLite, dan beri komentar di mysql:DATABASE_HOST
DATABASE_PORT
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
SQLALCHEMY_DATABASE_URI
untuk SQLite, dan beri komentar di 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'
Untuk mengubah database default:
flaskbda
), Pengguna ( flaskbda_user
) dan Kata Sandi ( password
)config.py
import pyodbc
.DATABASE_DRIVER
.DATABASE_ENGINE
untuk SQLite, dan misalnya beri komentar di SQLServer DATABASE_ENGINE
.DATABASE_NAME
untuk SQLite, dan beri komentar di SQLServer:DATABASE_HOST
DATABASE_PORT
DATABASE_USERNAME
DATABASE_PASSWORD
DATABASE_NAME
SQLALCHEMY_DATABASE_URI
untuk SQLite, dan beri komentar di try
dan except
untuk SQLServer SQLALCHEMY_DATABASE_URI
.Catatan: jika Anda menjalankan dan mencoba menyambung ke
SQLEXPRESS
. Harap batalkan komentar pada variabel SQLServerSQLEXPRESS
. Ini akan ditangani dalamtry
danexcept
untuk membuatSQLALCHEMY_DATABASE_URI
yang benar
Catatan: jika Anda ingin otentikasi windows. Harap batalkan komentar pada variabel SQLServer
TRUSTED_CONNECTION
. Ini akan ditangani dalamtry
danexcept
untuk membuatSQLALCHEMY_DATABASE_URI
yang benar
##########
# 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'
Pastikan instans MS-SQL Anda memiliki hak koneksi jarak jauh yang diatur dan referensi yang diaktifkan (di sini)[https://knowledgebase.apexsql.com/configure-remote-access-connect-remote-sql-server-instance-apexsql-tools/ ]:
Pastikan pengaturan "Manajemen konfigurasi server SQL" dikonfigurasi dengan benar
CATATAN: Instalasi Anda akan memerlukan
Client Tools Connectivity
, jika Anda tidak dapat menemukan "manajemen konfigurasi server SQL", maka Anda mungkin perlu memodifikasi instalasi Anda untuk menyertakanClient Tools Connectivity
- jika Anda tidak dapat menemukan "", Anda mungkin perlu menggunakan alat "Gunakan Manajemen Komputer". untuk mengaksesnya.
- ini sepertinya masalah Windows 10
Multitenancy adalah arsitektur perangkat lunak di mana satu perangkat lunak berjalan di server dan melayani banyak penyewa (klien). Perangkat lunak multipenyewa memungkinkan beberapa contoh independen dari satu atau beberapa aplikasi beroperasi di lingkungan bersama.
Flask-BDA mendukung multi-tenancy yang dipartisi secara vertikal. Partisi vertikal berarti setiap penyewa memiliki database (dan string koneksi database) yang berbeda.
Secara default, Flask-BDA terhubung ke penyewa bernama
default
. Hal ini dilakukan dengan menggunakan objekSQLALCHEMY_BINDS
(ditemukan diconfig.py
), yang seharusnya memiliki detail koneksi spesifik yang Anda perlukan untuk setiap penyewa. Detail koneksi default digabungkan menjadi string yang disebutSQLALCHEMY_DATABASE_URI
, yang dimaksudkan untuk memungkinkan penyiapan penyewa tunggal dengan cepat dan mudah.
Anda dapat menggunakan struktur yang sama, namun untuk memiliki beberapa penyewa, Anda dapat dengan cepat menambahkannya ke objek
SQLALCHEMY_BINDS
. Untuk menambahkan penyewa baru, cukup:
SQLALCHEMY_BINDS
, dengan nama penyewa dan detail string koneksi SQLALCHEMY_BINDS = {
"default" : SQLALCHEMY_DATABASE_URI ,
"client1" : 'sqlite:///databases/sqlite/client1.db' ,
}
Anda sekarang dapat berinteraksi dengan database penyewa yang terisolasi dengan menambahkan argumen
organization=
ke URL Anda, misalnya:example.com?organization=client1
denganclient1
adalah nama yang Anda tambahkan di objekSQLALCHEMY_BINDS
.
Ini bekerja dengan mencegat
@app.before_request
diapp/_init_.py
dan mengubah pengikatan mesin db dengan menggunakandb.choose_tenant(g.organization)
dariapp/mod_tenancy/multi_tenant.py
dengan menggunakan variabel globalg.organization
yang mendapat diatur dengan mengambil argumen URLorganization
. Hal ini memungkinkan kode yang sama di aplikasi, untuk digunakan oleh setiap database penyewa sambil menjaga data tetap terpisah.
Terkadang Anda perlu berinteraksi dengan database berbeda dalam satu fungsi (terutama saat mengintegrasikan sistem, atau membaca data dari sumber berbeda).
Secara default, semua pengontrol akan mengimpor
MultiBindSQLAlchemy
.
# import multiple bindings
from app . mod_tenancy . multi_bind import MultiBindSQLAlchemy
Di bawah impor ada kode yang diberi komentar yang dimaksudkan untuk membantu Anda mengimplementasikan penautan ke database yang berbeda dengan cepat dalam satu fungsi. Pertama pengikatan database perlu ditambahkan ke objek
SQLALCHEMY_BINDS
. Referensikan Database Terisolasi dengan fungsi yang sama untuk lebih memahami cara menambahkan database baru ke objekSQLALCHEMY_BINDS
.
Anda kemudian dapat membuat objek baru yang dilampirkan ke objek
db
mengikuti strukturdb.<binding>
misalnya:db.first
di manafirst
adalah nama yang ingin Anda referensikan pengikatannya di sisa kode. Anda kemudian dapat menetapkan variabel ini keMultiBindSQLAlchemy
misalnya:db.first = MultiBindSQLAlchemy('first')
.
Ini sekarang memungkinkan Anda untuk memanggil kode khusus yang memungkinkan Anda mengakses pengikatan database baru serta penyewa utama dalam satu fungsi misalnya:
db.first.execute(...)
, tempat Anda dapat mengeksekusi kode SQL mentah.
db . first = MultiBindSQLAlchemy ( 'first' )
##################################################
## this will only work for the execute function ##
##################################################
db . first . execute (...)
**Catatan: ** ini hanya akan berfungsi untuk fungsi
execute
, ada beberapa teknik lanjutan untuk tetap menggunakan SQLAlchemy ORM yang dapat ditemukan di sini: Tutorial eksekusi SQLAlchemy
Modul adalah komponen mandiri, sehingga lebih mudah untuk dikelola seiring berkembangnya program. Modul di Flask-BDA membantu Anda membuat: Model Data, Rute, dan fungsi terkait untuk mengontrol logika dan Tampilan.
Saat Anda membuat modul CRUD baru, semua elemen dari folder
create_module_template
disalin ke direktori aplikasi dan diganti namanya menjadi nama modul yang Anda berikan dengan mengganti semua nilaixyz
dengan nama modul Anda dan menambahkan informasi model data tambahan seperti dijelaskan di bawah
<Path To>/<my_awesome_project>/create_module_json.py
<Path To>/<my_awesome_project>/
adalah path ke proyek yang Anda buat 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 :
Catatan: Ini akan terus berulang hingga Anda mengetik dan mengirimkan kata yang tepat: "STOP_CREATING_FIELDS".
Ini memungkinkan Anda membuat beberapa bidang untuk modul Anda dengan cepat dan mudah.
Bidang di atas akan menunjukkan bahwa Anda memiliki jenis bidang berbeda yang berinteraksi dan membuat beberapa bidang.
Catatan: Hubungan akan selalu dibuat berdasarkan
id
model yang disediakan.ForeignKey dibuat di lapangan, serta hubungan malas antara model yang disediakan bidang
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
Catatan: Anda juga dapat membuat modul dari file JSON di "app/generated_config/models//models.json", di mana nama modul yang Anda masukkan untuk melakukan ini, Buka dan jalankan file:
<Path To>/<my_awesome_project>/create_module.py
* Dimana<Path To>/<my_awesome_project>/
adalah path ke proyek yang Anda buat * Isi instruksinya misal:
cd < Path To > / < my_awesome_project > /
python create_module . py - - module = projects
Ini kemudian akan membuat file dan folder yang diperlukan seperti yang dijelaskan di bawah dalam Perubahan aplikasi
File dan folder dari folder
create_module_template
dibuat untuk modulProjects
dan kemudian ditambahkan ke folderapp
Ini akan membuat tampilan CRUD admin scaffold, REST API (Dengan Penyisipan dan Pembaruan Massal), API GraphQL, serta tampilan dan logika publik untuk memungkinkan Anda segera berinteraksi dengan modul yang Anda buat.
Dari panel admin, Anda dapat melakukan tindakan berikut: Buat, Baca, Perbarui, dan Hapus ("CRUD") untuk modul baru Anda.
Tampilan yang menghadap publik memungkinkan pengguna tamu (pengguna yang tidak login) untuk melihat tampilan informasi yang diberikan
└── `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
Membuat modul baru akan memberi Anda 3 cara untuk berinteraksi dengan sistem baru Anda
Public
,Admin
,REST API
danGraphQL API
.
Untuk mengaksesnya, mereka memerlukan aplikasi untuk berjalan di suatu lingkungan.
Tampilan
Public
adalah tampilan data yang tidak diautentikasi yang disediakan dalam modul.
xyz
adalah nama modulnya):../xyz/
public_list
Tampilan
Admin
adalah tampilan terotentikasi dari data yang disediakan dalam modul.
xyz
adalah nama modulnya):../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
Tampilan
API
adalah daftar titik akhir REST API, dokumentasi terkait, dan tempat eksekusi.
Flask BDA menggunakan SwaggerUI untuk menyajikan REST API kepada pengguna/klien.
SwaggerUI memungkinkan siapa pun — baik tim pengembangan atau konsumen akhir Anda — untuk memvisualisasikan dan berinteraksi dengan sumber daya API tanpa memiliki logika implementasi apa pun. Sebaliknya, ini dihasilkan secara otomatis dari Spesifikasi OpenAPI (sebelumnya dikenal sebagai Swagger), dengan dokumentasi visual yang memudahkan implementasi back-end dan konsumsi sisi klien.
Untuk mengakses SwaggerUI:
<base_URL>/api/docs
untuk mengakses REST API SwaggerUI, misalnya: http://localhost:5000/api/docs
.Untuk mengakses REST API tanpa 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
Tampilan
graphql
adalah tampilan GraphiQL, titik akhir API, dokumentasi terkait, dan tempat eksekusi.
Flask BDA menggunakan graphene-python dan GraphiQL untuk menyajikan API GraphQL kepada pengguna/klien, menyediakan API sederhana namun dapat diperluas untuk membuat hidup pengembang lebih mudah.
GraphQL adalah bahasa kueri data yang memberikan alternatif terhadap arsitektur layanan web REST dan ad-hoc.
Untuk mengakses GraphiQL:
<base_URL>/graphql
untuk mengakses GraphiQL, GraphQL API, misalnya: http://localhost:5000/graphql
.Untuk mengakses API GraphQL tanpa GraphiQL:
<base_URL>/
../graphql
mod_graphql
> query
> Query
> all_xyz
../graphql
mod_graphql
> mutation
> Mutation
> createXyz
Saat ini ada 7 lingkungan siap pakai yang didukung (dengan rencana untuk lebih banyak lagi yang akan segera didukung) dengan petunjuk tentang cara mengonfigurasi masing-masing lingkungan untuk Windows / Linux / Mac
, dan Anda dapat menjalankannya secara bersamaan jika Anda mau.
Untuk membuat dan mengembangkan aplikasi lokal, kami menggunakan virtualenv. Alat untuk membuat lingkungan python virtual yang terisolasi.
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
misalnya: 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
Beberapa layanan shared hosting menawarkan kemampuan untuk menjalankan aplikasi python di server mereka. Saya pribadi pernah menggunakan A2hosting. Dukungan mereka luar biasa, dan harga fiturnya adalah salah satu yang terbaik yang pernah saya temui.
Catatan: Anda tidak dibatasi pada A2 sebagai opsi hosting bersama. Namun, di sinilah saya menguji Flask-BDA dan mendapatkan pengalaman saya dalam mengunggah dan menjalankan opsi hosting bersama. Jika opsi hosting bersama Anda menawarkan serangkaian fitur serupa, silakan menggunakannya.
Untuk A2, Anda perlu menyiapkan server Anda untuk menjalankan aplikasi python yang mungkin memerlukan beberapa konfigurasi misalnya.
Agar aplikasi khusus Anda berfungsi:
Catatan: Di lingkungan
Linux
persyaratanpyodbc
tidak akan berfungsi secara default. Oleh karena itu, dan sebagai lingkungan bersama - Anda mungkin tidak memiliki hak untuk menambahkan persyaratan agar dapat berfungsi, cara termudah untuk memastikan bahwa instalasi tidak gagal adalah dengan mengomentari persyaratan ini di server.
requirements.txt
, dan cari pyodbc
dan beri tanda #
dengan spasi sebelum nama paket. # pyodbc==4.0.30
requirements.txt
SSH
yang Anda masuki pada langkah sebelumnya pip install --upgrade pip
pip install --no-cache-dir -r requirements.txt
Setup Python App
Application startup file
menjadi run_shared_server.py
Untuk membuat dan menerapkan aplikasi dalam container, kami menggunakan Docker, yang membantu pengembang dan tim pengembangan membangun dan mengirimkan aplikasi. Selain itu, Docker digunakan untuk membangun dan berbagi aplikasi dan layanan mikro dalam container.
Catatan: Jika Anda menggunakan Github dan telah menginstal buruh pelabuhan (detail tentang cara menginstal nanti ada di dokumentasi), Anda akan mendapatkan image baru yang dibuat setiap kali Anda
push
atau melakukanpull_request
di Github, yang diatur dalam file:docker-image.yml
namun jika Anda ingin melakukannya secara manual, silakan ikuti langkah-langkah di bawah ini:
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
Catatan: Masih dalam pengembangan
Untuk membuat dan menerapkan aplikasi tanpa server, kami menggunakan Kerangka Kerja Tanpa Server, yang memungkinkan pengembangan tanpa server tanpa gesekan, sehingga Anda dapat dengan mudah membangun aplikasi yang dapat diskalakan secara otomatis pada infrastruktur cloud generasi berikutnya yang berbiaya rendah.
Kerangka kerja Tanpa Server adalah alat sumber terbuka yang menyediakan pengembangan dan penerapan YAML + CLI yang mudah ke AWS, Azure, Google Cloud, Knative, dan lainnya.
Catatan: Anda mungkin perlu menyesuaikan string database default sebelum del=polying karena tanpa server tidak mendukung "SQLite" karena fungsinya tidak mempertahankan status.
Untuk memperbarui string database, silakan merujuk ke [Config]
npm update -g serverless
npm update -g serverless
choco install serverless
Catatan: Jika paket tidak terinstal, Anda mungkin perlu menjalankan perintah sebagai admin.
tekan tombol "Windows-Key" ketik "cmd", "Klik Kanan" pada kata "Command Prompt" dan pilih opsi "Run as administrator" lalu ikuti kembali langkah sebelumnya
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
Catatan: Masih dalam pengembangan
Digital Ocean adalah platform sebagai layanan (PaaS). Kembangkan, kelola, dan skalakan aplikasi Anda pada platform cloud lengkap DigitalOcean. Digital Ocean memberi Anda harga yang sederhana dan dapat diprediksi. Bangun dan rilis dengan percaya diri dengan produk komputasi yang dapat diskalakan di cloud, database yang terkelola sepenuhnya, opsi penyimpanan yang sangat tersedia dan dapat diskalakan, dan banyak lagi. Dengan mesin virtual dengan jumlah memori yang sehat yang disesuaikan untuk menghosting dan menskalakan aplikasi dan database, Digital Ocean menawarkan solusi sederhana untuk masalah yang kompleks.
Untuk membuat dan menerapkan aplikasi ke Heroku dari terminal, Anda perlu:
138.197.67.25
CATATAN jika Anda belum terhubung melalui SSH Anda harus menerima
password
melalui email yang Anda gunakan untuk mendaftarkan akun, untuk Digital Ocean.
cd < Path To > / < my_awesome_project > /
scp -r < my_awesome_project > root@ < ip_address > :/
ssh root@ < ip_address >
Dimana
<Path To>/<my_awesome_project>/
adalah path ke proyek yang Anda buat dan dimana<ip_address>
adalah droplet <ip_address> misal:138.197.67.25
Catatan: Ikuti petunjuk apa pun yang disajikan oleh SSH seperti memungkinkan akses dari server jarak jauh.
Setelah Anda masuk, Anda harus dapat melihat terminal dengan:
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
Dimana
5000
adalah nomor port
dan<droplet_name>
adalah namanya
cd < Path To > / < my_awesome_project > /
scp -r < my_awesome_project > root@ < ip_address > :/
ssh root@ < ip_address >
Di mana
<Path To>/<my_awesome_project>/
adalah jalur ke proyek yang Anda buat dan di mana<ip_address>
adalah tetesan <Ip_Address> misalnya:138.197.67.25
Catatan: Ikuti petunjuk apa pun yang disajikan oleh SSH seperti memungkinkan akses dari server jarak jauh.
Setelah Anda masuk, Anda harus dapat melihat terminal dengan:
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
Dimana
5000
adalah nomor port
dan<droplet_name>
adalah namanya
Catatan: Masih sedang dalam pengembangan
Heroku adalah platform sebagai layanan (PAAS). Heroku memungkinkan Anda untuk memulai dengan komitmen nol, membayar saat Anda tidak mengunci. Pengembang, tim, dan bisnis dari semua ukuran dapat menggunakan Heroku untuk menggunakan, mengelola, dan skala aplikasi. Apakah Anda sedang membangun prototipe sederhana atau produk yang sangat penting, platform Heroku yang dikelola sepenuhnya memberi Anda jalur sederhana untuk memberikan aplikasi dengan cepat.
Untuk membuat dan menggunakan aplikasi ke Heroku dari terminal, Anda perlu mengunduh dan menginstal Heroku CLI. Untuk memverifikasi instalasi, Anda dapat memeriksa versi Heroku dari terminal:
heroku --version
Catatan: Pastikan Anda telah mengubah koneksi database Anda, karena Heroku tidak menyarankan menggunakan SQLite, karena data mungkin hilang pada file. Heroku memang menawarkan database Postgres gratis. Lihat rencana mereka dan pilih rencana yang tepat untuk Anda karena ada batasan pada rencana yang berbeda.
cd < Path To > /my_awesome_project
heroku login
<my_awesome_project-flask-bda-app>
, di mana <my_awesome_project-flask-bda-app>
adalah nama yang Anda berikan pada proyek Anda.heroku create my_awesome_project-flask-bda-app
git push heroku master
<my_awesome_project-flask-bda-app>
adalah nama yang Anda berikan pada proyek Anda. cd < Path To > /my_awesome_project
sudo snap install --classic heroku
heroku login
<my_awesome_project-flask-bda-app>
, di mana <my_awesome_project-flask-bda-app>
adalah nama yang Anda berikan pada proyek Anda.heroku create my_awesome_project-flask-bda-app
git push heroku master
<my_awesome_project-flask-bda-app>
adalah nama yang Anda berikan pada proyek Anda. cd < Path To > /my_awesome_project
brew tap heroku/brew && brew install heroku
heroku login
<my_awesome_project-flask-bda-app>
, di mana <my_awesome_project-flask-bda-app>
adalah nama yang Anda berikan pada proyek Anda.heroku create my_awesome_project-flask-bda-app
git push heroku master
<my_awesome_project-flask-bda-app>
adalah nama yang Anda berikan pada proyek Anda. Untuk aplikasi seluler asli, kami menggunakan reaksi-asli. Secara khusus, kami menggunakan Expo sebagai kerangka kerja dan platform untuk aplikasi reaksi universal. Ini adalah seperangkat alat dan layanan yang dibangun di sekitar platform React asli dan asli yang membantu Anda mengembangkan, membangun, menggunakan, dan dengan cepat mengulangi pada aplikasi iOS, Android, dan web dari basis kode JavaScript/TypeScript yang sama.
Kami memiliki pemberitahuan push pre-sast up, jadi Anda tidak perlu melakukannya. Ini berarti lebih cepat dan lebih mudah bagi Anda untuk memulai dan naik dan berjalan. Selain itu, kami memanfaatkan paket notifikasi expo default yang memungkinkan untuk implementasi dan pendekatan yang disederhanakan.
Keuntungan meliputi alur kerja/proses pembangunan dan pengujian yang lebih cepat, pengujian jarak jauh saat mengembangkan dengan Over Air (OTA) pembaruan dengan perubahan yang terlihat pada penghematan selama pengembangan.
Namun, ada beberapa kelemahan dan batasan Expo menyadari hal ini dan menggambarkannya dengan cukup baik. Kami menyarankan meninjau keterbatasan ini sebelum menggunakan metode pra-built kami.
Bangun satu proyek yang berjalan secara asli di semua perangkat pengguna Anda.
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
Karena Flask BDA tidak menentukan di mana Anda harus meng -host situs web Anda, Anda perlu memberi tahu aplikasi seluler Anda ke mana harus pergi.
Dalam contoh QuickStart, kami membuat proyek yang disebut
"My Awesome Project"
. Namun, Anda mungkin menyebut proyek itu sesuatu yang lain. Ini akan membuat folder di mana namanya semuanya dalam huruf kecil dan menanggalkan semua karakter khusus, dan mengganti ruang dengan garis bawah, misalnya:my_awesome_project
.
Untuk seluler, kami akan secara otomatis membuat folder
"_mobile_app"
yang terpisah di mana awalan folder adalah nama proyek Anda, misalnyamy_awesome_project_mobile_app
. Ini untuk mencegah masalah denganpackage.json
konfigurasiServerless
dan memungkinkan Anda untuk tidak menggunakan semua kode untuk aplikasi seluler ke server web Anda.
Jika Anda masih dalam pengembangan dan/atau belum memilih penyedia layanan untuk hosting, Anda dapat menggunakan: Ngrok untuk membuat URL pengembangan publik sementara yang terowongan ke lingkungan lokal Anda. Ngrok memperlihatkan server lokal di belakang NATS dan Firewall ke Internet publik melalui terowongan yang aman. Ini memungkinkan Anda untuk demo situs web pada URL publik dan menguji aplikasi seluler yang terhubung ke backend lokal Anda tanpa menggunakan.
Mulai server pengembangan lokal dengan mengikuti instruksi lingkungan lokal
Jika Anda belum terdaftar untuk Ngrok sebelumnya:
Jika Anda sudah mendaftar tetapi tidak menginstalnya:
Setelah terminal Ngrok terbuka, buat terowongan dari server lokal Anda ke Ngrok
5000
default, lalu ganti nomor setelah http
untuk memungkinkan terowongan yang benar dibuat. 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
Catatan: Versi gratis hanya membuat server ini tetap hidup selama 2 jam, jadi Anda mungkin perlu mengikuti proses ini di masa depan, dan jika Anda mendorong URL ini ke "repo" Anda, itu mungkin tidak berfungsi untuk orang berikutnya.
my_awesome_project_mobile_app
app.json
dan edit baris 2 "server_base_url": "https://github.com/RyanJulyan/Flask-BDA"
dengan mengganti https://github.com/RyanJulyan/Flask-BDA
dengan Anda sendiri nama server.expo
di ponsel Anda sendiri dengan mencari "Expo" di Apple atau Google Play Store:iOS
Pergi ke: https://apps.apple.com/app/apple-store/id982107779Android
Go To: https://play.google.com/store/apps/details?id=host.exp.exponentSetelah aplikasi Anda diinstal di ponsel Anda, Anda dapat memulai server pengembangan di mesin lokal Anda.
cd < Path To > /my_awesome_project_mobile_app
expo start
cd < Path To > /my_awesome_project_mobile_app
expo start
Ini akan membuka halaman web dengan kode QR di atasnya. Ini akan memungkinkan Anda untuk menggunakan aplikasi Expo jika Anda menggunakan Android atau menggunakan kamera jika Anda menggunakan iOS untuk memindai kode dan membuka aplikasi Anda langsung dari server pengembangan.
CATATAN: Jika Anda ingin orang -orang tidak ada di jaringan Anda untuk dapat memindai dan menguji aplikasi dari jarak jauh, tekan tombol tab
tunnel
di atas kode QR.
Bagian dari rekomendasi adalah untuk memastikan bahwa gambar dioptimalkan. Untuk melakukan Expo ini telah merekomendasikan paket yang dioptimalkan Expo yang dapat membantu mengoptimalkan gambar. Selain itu, mengoptimalkan gambar dapat meningkatkan TTI aplikasi asli Anda (atau waktu-ke-interaksi), yang berarti lebih sedikit waktu pada layar percikan dan pengiriman lebih cepat melalui koneksi jaringan yang buruk.
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
Untuk membuat dan mengembangkan aplikasi desktop, kami menggunakan FlaskWebGUI. Alat untuk membuat dan menjalankan aplikasi web Flask Anda dalam pembungkus chrome. Untuk mendistribusikan aplikasi desktop, kami menggunakan pyinstaller. PyInstaller Freezes (Paket) Aplikasi Python menjadi executable stand-alone di bawah Windows, GNU/Linux, Mac OS X, FreeBSD, Solaris dan AIX.
Setiap penyebaran perlu dibuat pada platform spesifik yang ingin Anda jalankan. Kami telah membuat skrip yang akan memungkinkan Anda untuk mengelola penyebaran ini dengan menempatkan folder
build
dandist
ke folder induk untuk platform masing -masing. Folder ini akan diawali dengandesktop_
diikuti oleh platform. Ini dilakukan murni untuk memungkinkan Anda mengelola proses distribusi dan membangun untuk platform tertentu dan tidak menimpanya saat membangun di berbagai platform.
Untuk memungkinkan ekspor ke desktop bekerja dengan benar, kami memerlukan beberapa perubahan kode. Secara default, Flask-BDA dimaksudkan untuk pengembangan web dan seluler, dan kami telah menerapkan limit-limiter di situs. Sayangnya, Anda memerlukan server untuk menilai batas, dan karena Anda mengekspor sistem ke aplikasi desktop, itu tidak menjalankan server.
Karena itu, Anda perlu menghapus semua referensi ke limiter. Ini dapat ditemukan di
app/__init__.py
. Untuk melakukan ini, buka file dalam editor teks dan komentari baris berikut:
# 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']
# )
Catatan: Jika Anda menambahkan pembatas khusus, cari
@limiter.limit
, yang akan ditemukan di pengontrol Anda. Anda perlu mengomentari semua referensi itu dan referensi impor, misalnya:from app import limiter
Ini akan memungkinkan Anda untuk mengekspor aplikasi sebagai file desktop yang dapat dieksekusi tanpa kesalahan.
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
Ini akan membuka jendela maksimal yang akan berjalan seperti aplikasi desktop normal. Ini akan menggunakan browser chrome yang diinstal secara lokal untuk melayani konten.
Secara default, aplikasi ini akan dilayani di port
7000
. Namun, Anda dapat mengedit port di filerun_desktop.py
jika itu bertentangan dengan aplikasi yang ada.
Jika Anda menyertakan paket Python tambahan dalam proyek Anda, jangan lupa untuk menjalankan
pip freeze
dari terminal Anda untuk memastikan Anda mendapatkan paket yang benar untuk penyebaran Anda
pip freeze > requirements.txt
Catatan: Disarankan agar Anda menginstal dan membekukan paket Python tambahan dari lingkungan virtual daripada secara global. Ini menjaga
requirements.txt
Anda.txt kecil dan terbatas pada paket yang Anda gunakan dalam proyek spesifik Anda.
Flask BDA menggunakan Swaggerui secara default untuk membantu dan menyajikan API kepada pengguna/klien.
Swaggerui memungkinkan siapa pun - baik itu tim pengembangan Anda atau konsumen akhir Anda - untuk memvisualisasikan dan berinteraksi dengan sumber daya API tanpa memiliki logika implementasi apa pun. Sebaliknya, ini secara otomatis dihasilkan dari spesifikasi OpenAPI Anda (sebelumnya dikenal sebagai Swagger), dengan dokumentasi visual memudahkan implementasi back-end dan konsumsi sisi klien.
Untuk mengakses Swaggerui:
<base_URL>/api/docs
untuk mengakses API Swaggerui, misalnya: http://localhost:5000/api/docs
Banyak pengembang akan lebih suka tukang pos daripada Swaggerui untuk menguji dan mengintegrasikan API dengan kode mereka. Kami telah membantu dengan memberikan ekspor koleksi langsung untuk tukang pos.
Untuk mengimpor koleksi di tukang pos:
Import...
(Ctrl+O)Link
dari tab<base_URL>/api/postman
EG: http://localhost:5000/api/postman
<base_URL>/aswagger.json
EG: http://localhost:5000/swagger.json
dan impor langsung ke postmanhttps://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>
dan <path to the downloaded Postman file>
adalah jalur file fisik pada mesin lokal Anda.Continue
Import
Ini akan mengimpor koleksi tukang pos yang akan tersedia di sisi kiri sebagai folder (dengan subfolder dari masing-masing titik akhir yang Anda buat).
Anda dapat menghasilkan kode untuk berbagai lanuages dan kerangka kerja menggunakan tukang pos. Bahasa -bahasa ini termasuk tetapi tidak terbatas pada:
Memungkinkan Anda untuk mengintegrasikan API yang baru dibuat dengan proyek yang ada
Terkadang, Anda perlu membuat permintaan eksternal (misalnya ke API eksternal). Anda dapat mendekati ini menggunakan permintaan AJAX, tetapi kadang-kadang Anda perlu membuat permintaan ini dari sisi server, misalnya, jika Anda ingin memperbarui konversi mata uang secara otomatis. Ketika Anda ingin mengakses API eksternal melalui server, Anda tidak ingin mengandalkan pengguna secara aktif berada di halaman web untuk mengirim perintah. Sebaliknya, Anda ingin server dapat mengaktifkan komentar ini. Untuk mencapai ini, kami menggunakan modul permintaan.
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 )
Permintaan AJAX, biasanya permintaan HTTP yang dibuat oleh (Browser-Client) di JavaScript yang menggunakan XML/JSON untuk meminta data dan/atau data respons dari sistem internal atau eksternal. Permintaan AJAX dibuat menggunakan </> htmx secara default.
HTMX adalah perpustakaan bebas ketergantungan yang memungkinkan Anda mengakses AJAX, transisi CSS, websockets, dan peristiwa server-sent secara langsung di HTML, menggunakan atribut sehingga Anda dapat membangun antarmuka pengguna modern dengan kesederhanaan dan kekuatan hiperteks. Untuk detail tentang cara menggunakan htmx, silakan merujuk ke dokumen dan untuk referensi lengkap tentang fungsionalitas, silakan merujuk ke https://htmx.org/reference/
Anda dapat menggunakan HTMX untuk mengimplementasikan banyak pola UX umum, seperti pencarian aktif:
< 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 >
Input ini bernama Q ini akan mengeluarkan permintaan ke /trigger_delay
500 milidetik setelah acara key-up jika input telah diubah dan memasukkan hasilnya ke DIV dengan hasil pencarian ID.
Terlepas dari keunggulan enkripsi simetris, ada cacat dalam metode ini yang memungkinkan individu yang tidak berwenang untuk mengakses kunci rahasia pesan.
Salah satu cara paling efektif untuk mencegah akses tidak sah ke kunci rahasia pesan adalah dengan menerapkan fungsi satu arah seperti algoritma diffie-Hellman. Metode ini hanya memungkinkan pengirim dan penerima untuk mendekripsi pesan.
Fungsi satu arah biasanya diimplementasikan menggunakan jenis algoritma yang memungkinkan mereka untuk menghitung output untuk setiap input yang diterima. Namun, metode ini tidak layak untuk mendapatkan hasil yang tepat dari kunci acak.
Pengujian adalah bagian penting dari memastikan proyek berjalan dengan sukses
Ada 3 aspek pengujian yang disediakan dalam Flask BDA:
Catatan: Untuk menjalankan Python
unittest
secara manual, pastikan Anda telah menginstal lingkungan lokal
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
Catatan: Untuk menjalankan Python
unittest
secara manual, pastikan Anda telah menginstal lingkungan lokal
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
File tunggal jalankan dan setup
Proyek starter flask, yang membangun struktur folder proyek dengan
992px
500px
@mobile_template
, memungkinkan tampilan template untuk disesuaikan untuk pengalaman seluler yang lebih baik jika diperlukan.{% if request.MOBILE %}True{% else %}False{% endif %}
config.py
untuk akses cepat dan manajemen variabel lingkungan dan lingkungan dan SEO defaultconfig.py
Buat file dan folder modul kustom yang sesuai dengan struktur proyek Flask dari file create_module.py
dengan prompt untuk membuat yang berikut:
public_list
index
create
store
show
edit
update
destroy
get
post
get
update
delete
before
dan after
perubahan pada event listeners
model data untuk:Insert
Update
Delete
public_list
index
create
store
show
edit
update
destroy
get
post
get
update
delete
post
update
get
public_list.html
(elemen daftar)index.html
(elemen daftar)create.html
(bentuk elemen tunggal)show.html
(elemen tunggal)edit.html
(bentuk elemen tunggal)api/docs
(URL)Dukungan browser (1 versi utama terakhir tidak mati)
└── `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
Modul adalah bagian dari suatu program. Program terdiri dari satu atau lebih modul yang dikembangkan secara independen yang, ketika digabungkan, membuat program.
Modul adalah komponen mandiri, membuatnya lebih mudah untuk dikelola seiring dengan tumbuhnya program.
Modul dalam Flask-BDA membantu Anda membuat: model data, rute, dan fungsi terkait untuk mengendalikan logika dan tampilan
Pengontrol dapat mengelompokkan permintaan penanganan permintaan terkait ke dalam satu kelas. Misalnya, kelas UserController mungkin menangani semua permintaan yang masuk yang terkait dengan pengguna, termasuk menunjukkan, membuat, memperbarui, dan menghapus pengguna.
Buat, baca, perbarui, dan hapus ("crud")
Linting adalah pemeriksaan otomatis kode sumber Anda untuk kesalahan terprogram dan gaya. Ini dilakukan dengan menggunakan alat lint (atau dikenal sebagai linter). Alat serat adalah penganalisa kode statis dasar.
Lint, atau linter, adalah alat analisis kode statis yang digunakan untuk menandai kesalahan pemrograman, bug, kesalahan gaya, dan konstruksi yang mencurigakan.
Dalam pemrograman komputer, pengujian unit adalah metode pengujian perangkat lunak dimana unit masing -masing kode sumber - set satu atau lebih modul program komputer bersama dengan data kontrol terkait, prosedur penggunaan, dan prosedur operasi - diuji untuk menentukan apakah mereka cocok untuk digunakan .
Platform pengembangan kode rendah menyediakan lingkungan pengembangan untuk membuat perangkat lunak aplikasi melalui antarmuka dan konfigurasi pengguna terprogram atau grafis alih-alih pemrograman komputer kode tangan tradisional.
Kami akan senang jika Anda berkontribusi pada proyek dalam satu atau semua cara ini:
Lihat informasi lisensi untuk Python 3. (Https://docs.python.org/3.8/license.html) dan perjanjian hukum lainnya (https://www.python.org/about/legal/)
Lihat informasi lisensi untuk Docker. (https://www.docker.com/legal/components-licenses) dan perjanjian hukum lainnya (https://www.docker.com/legal)
Seperti halnya semua gambar Docker, ini kemungkinan juga berisi perangkat lunak lain yang mungkin berada di bawah lisensi lain (seperti bash, dll., Dari distribusi dasar, bersama dengan ketergantungan langsung atau tidak langsung dari perangkat lunak utama yang terkandung).
Beberapa informasi lisensi tambahan yang dapat dideteksi secara otomatis dapat ditemukan di direktori/ direktori/ direktori repositori repo-info.
Adapun penggunaan gambar yang telah dibangun sebelumnya, tanggung jawab pengguna gambar adalah untuk memastikan bahwa penggunaan gambar ini sesuai dengan lisensi yang relevan untuk semua perangkat lunak yang terkandung di dalamnya.
Lihat informasi lisensi untuk kerangka kerja tanpa server dan perjanjian hukum lainnya (https://app.serverless.com/legal/terms).
Adalah tanggung jawab pengguna untuk memastikan bahwa mematuhi kebijakan penggunaan yang dapat diterima (https://app.serverless.com/legal/aup)
Lihat informasi lisensi untuk kerangka kerja Expo dan perjanjian hukum lainnya (https://github.com/expo/expo/blob/master/license).
Flask-BDA dibuat dan didistribusikan di bawah lisensi Flask-BDA yang ramah pengembang. Lisensi Flask-BDA berasal dari lisensi Apache 2.0 yang populer.
Lisensi Flask-BDA adalah persyaratan hukum bagi Anda atau perusahaan Anda untuk menggunakan dan mendistribusikan Flask-BDA dan karya derivatif seperti aplikasi yang Anda buat dengannya. Aplikasi atau proyek Anda dapat memiliki lisensi yang berbeda, tetapi masih perlu mematuhi yang asli.
Inklusi Lisensi dan Pemberitahuan Hak Cipta
Lisensi Flask-BDA mensyaratkan bahwa Anda harus memasukkan lisensi dan pemberitahuan hak cipta dengan semua salinan Flask-BDA dan dalam pekerjaan yang diturunkan yang dibuat menggunakan Flask-BDA. Terserah Anda untuk memutuskan bagaimana Anda ingin mendistribusikan lisensi dan pemberitahuan. Di bawah ini adalah beberapa contoh bagaimana ini dapat dilakukan:
Hak Cipta 2021 Flask-BDA, Ryan Juli dilisensikan di bawah Lisensi Flask-BDA Versi 0.1 ("Lisensi"); Anda tidak boleh menggunakan Flask-BDA
kecuali sesuai dengan lisensi. Anda dapat memperoleh salinan lisensi, di https://github.com/RyanJulyan/Flask-BDA/blob/main/LICENSE
kecuali diharuskan oleh hukum yang berlaku atau disepakati secara tertulis, perangkat lunak yang didistribusikan di bawah lisensi didistribusikan pada " Seperti "dasar, tanpa jaminan atau ketentuan apa pun, baik tersurat maupun tersirat. Lihat lisensi untuk bahasa spesifik yang mengatur izin dan batasan di bawah lisensi.