Skip to main content

A fast, stable, comprehensive web framework

Project description

https://travis-ci.com/web2py/py4web.svg?branch=master https://img.shields.io/pypi/v/py4web.svg

PY4WEB is a web framework for rapid development of efficient database driven web applications. It is an evolution of the popular web2py framework but much faster and slicker.

Screenshots

Running py4web

docs/images/first_run.png

The main Dashboard

docs/images/dashboard_main.png

Editing a file in the Dashboard

docs/images/dashboard_edit.png

Editing a database in the Dashboard

docs/images/dashboard_restapi.png

Installation

PY4WEB runs fine on Windows, MacOS and Linux. There are many installation procedures (see the official documentation for details) but only two of them are summarized here.

The simplest way to install py4web is using binaries, but it’s only available for Windows and MacOS. It’s meant especially for newbies or students, because it does not require Python pre-installed on your system nor administrative rights. You just need to download the latest Windows or MacOS ZIP file from this external repository. Unzip it on a local folder and open a command line there. Finally run the commands (omit ‘./’ if you’re using Windows)

./py4web set_password
./py4web run apps

The standard installation procedure for py4web on Windows, MacOS and Linux is using pip. Its only prerequisite is Python 3.7+.

python3 -m pip install --upgrade py4web --no-cache-dir --user

but do not type the ‘’–user’’ option with virtualenv or a standard Windows installation which is already per-user. Also, if ‘’python3’’ does not work, try with the simple ‘’python’’ command instead.

This will install the latest stable release of py4web and all its dependencies on the system’s path only. After the installation you’ll be able to start py4web on any given working folder with

py4web setup apps
py4web set_password
py4web run apps

Launch Arguments

# py4web run -h

Usage: py4web.py run [OPTIONS] [APPS_FOLDER]

   Run all the applications on apps_folder

Options:
-Y, --yes                     No prompt, assume yes to questions  [default:
                              False]
-H, --host TEXT               Host name  [default: 127.0.0.1]
-P, --port INTEGER            Port number  [default: 8000]
-p, --password_file TEXT      File for the encrypted password  [default:
                             password.txt]
-s, --server [default|wsgiref|tornado|gunicorn|gevent|waitress|
                geventWebSocketServer|wsgirefThreadingServer|rocketServer]
                              server to use  [default: default]
-w, --number_workers INTEGER  Number of workers  [default: 0]
-d, --dashboard_mode TEXT     Dashboard mode: demo, readonly, full,
                              none  [default: full]
--watch [off|sync|lazy]       Watch python changes and reload apps
                              automatically, modes: off, sync, lazy
                              [default: lazy]
--ssl_cert PATH               SSL certificate file for HTTPS
--ssl_key PATH                SSL key file for HTTPS
--errorlog TEXT               Where to send error logs
                              (:stdout|:stderr|tickets_only|{filename})
                              [default: :stderr]
-L, --logging_level INTEGER   The log level (0 - 50) [default: 30
                              (=WARNING)]
-D, --debug                   Debug switch [default: False]
-help, -h, --help             Show this message and exit.

Example:

py4web run -H 127.0.0.1 -P 8000 -d demo apps

Note that since the default (as specified above) for the host and port are 127.0.0.1 and 8000 respectively, the above command can be shortened to:

py4web run -d demo apps

Tell me more

  • it is 10-20x faster than web2py

  • python3.7+ only

  • uses https://github.com/web2py/pydal (same DAL as web2py) for database connection

  • uses the same validators as web2py (they are in pyDAL)

  • uses yatl (same as web2py but defaults to [[…]] instead of {{…}} delimiters) and Renoir for html templates

  • uses the very similar html helpers to web2py (A, DIV, SPAN, etc.)

  • uses https://github.com/web2py/pluralize for i18n and pluralization

  • request, response, abort are from https://bottlepy.org, using ombott (One More BOTTle), which is a fast bottlepy spin-off

  • HTTP and redirect are our own objects

  • like web2py, it supports static asset management /{appname}/static/_0.0.0/{path}

  • implements sessions in cookies (jwt encrypted), db, memcache, redis and custom

  • implements a cache.memoize (Ram cache with O(1) access) Memoize

  • supports multiple apps under apps folder (same as web2py)

  • unlike web2py does not use a custom importer or eval (this allow simple debugging with standard IDE)

  • admin has been replaced by a _dashboard

  • appadmin has been replaced by dbadmin (within _dashboard)

  • auth logic is implemented via a “auth” vue.js custom component

  • it comes with a Form object (like SQLFORM on web2py)

  • it comes with a Grid object providing grid and CRUD capabilities

  • it supports htmx

  • this is a work in progress and not stable yet but close to being stable

  • there are not enough tests

Contributors

Special thanks to Sam de Alfaro, that designed the official logo of py4web. We friendly call the logo “Axel the axolotl”: it magically represents the sense of kindness and inclusion we believe it’s the cornerstone of our growing community.

docs/images/logo.png

Many thanks to everyone who has contributed to the project, and especially:

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py4web-1.20240427.1.tar.gz (9.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py4web-1.20240427.1-py3-none-any.whl (9.0 MB view details)

Uploaded Python 3

File details

Details for the file py4web-1.20240427.1.tar.gz.

File metadata

  • Download URL: py4web-1.20240427.1.tar.gz
  • Upload date:
  • Size: 9.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.5

File hashes

Hashes for py4web-1.20240427.1.tar.gz
Algorithm Hash digest
SHA256 4c57ee49e54e58f08913fc847e8af6c95cf1c0afa18204ab6585fc622ae9a49c
MD5 f8280924667c4dff4d416a901436c081
BLAKE2b-256 93271d19ed84c9c2289bf5be4bf562ea72f17f6280fd4a822bfa74e38bc2708c

See more details on using hashes here.

File details

Details for the file py4web-1.20240427.1-py3-none-any.whl.

File metadata

  • Download URL: py4web-1.20240427.1-py3-none-any.whl
  • Upload date:
  • Size: 9.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.5

File hashes

Hashes for py4web-1.20240427.1-py3-none-any.whl
Algorithm Hash digest
SHA256 02c0774b3ae32321bfc2124135c53ea9a650d50b5d404126da0b309d2bd13413
MD5 4d2a2802e930df298afa3175c0e66490
BLAKE2b-256 f7b843a252a9f635bbeb035669905edc933ec343b9dcad62bdfdfcb962777c4f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page