The Python micro framework for building web applications.

Overview

Flask

Flask is a lightweight WSGI web application framework. It is designed to make getting started quick and easy, with the ability to scale up to complex applications. It began as a simple wrapper around Werkzeug and Jinja and has become one of the most popular Python web application frameworks.

Flask offers suggestions, but doesn't enforce any dependencies or project layout. It is up to the developer to choose the tools and libraries they want to use. There are many extensions provided by the community that make adding new functionality easy.

Installing

Install and update using pip:

$ pip install -U Flask

A Simple Example

# save this as app.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, World!"
$ flask run
  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Contributing

For guidance on setting up a development environment and how to make a contribution to Flask, see the contributing guidelines.

Donate

The Pallets organization develops and supports Flask and the libraries it uses. In order to grow the community of contributors and users, and allow the maintainers to devote more time to the projects, please donate today.

Links

Comments
  • Method `render_template` does not use blueprint specified `template_folder`

    Method `render_template` does not use blueprint specified `template_folder`

    1. File structure:
    project -
          - templates \
                    - a \
                          search.html
                    - b \
                          search.html
          - start.py
          - myapplication \
                    - test.py 
    
    1. Start file:
    # start.py
    from flask import Flask
    from myapplication.test import test_blueprint
    
    app = Flask(__name__)
    app.register_blueprint(test_blueprint)
    
    1. my application
    # test.py
    from flask import Blueprint, render_template, abort
    from jinja2 import TemplateNotFound
    
    test_blueprint = Blueprint('test_blueprint', __name__,
                            template_folder='absolute_path_to_project/templates/a')  
                            # YES, I specified the absolute path to the template a
    
    @test_blueprint.route('/test')
    def show():
        try:
            return render_template(''search.html") # HERE is the problem
        except TemplateNotFound:
            abort(404)
    

    Is this a problem? # Actually, I want to render a/search.html # But, render_template() does not use test_blueprint's template_folder # render_template() search the template list, find the first search.html, then render # So, maybe render a/search.html or b/search.html # This depend on the sequence of the template list

    blueprints 
    opened by Kevin922 57
  • What is the release schedule for 1.0?

    What is the release schedule for 1.0?

    What are the plans for the 1.0 release. This was brought up last year and there hasn't been any announcements since then. What progress is being made and what still remains?

    opened by lipis 46
  • BUG in

    BUG in "send_file" and "send_from_directory"

    L496 in helpers.py If i use flask as a package instead of a module, I want to expose a file which is not in package. checks in send_from_directory will be passed because of rel path. However, in send_file, added abs folder, it occur an error.

    bug 
    opened by baisk 40
  • allow using alternative json library

    allow using alternative json library

    It looks like flask.json does not allow the user to specify an alternative json library (such as rapidjson). Instead it just does this:

    try:
        from itsdangerous import simplejson as _json
    except ImportError:
        from itsdangerous import json as _json
    

    This currently un-overridable behavior also means that, due to differences in when default(..) is called between simplejson and json, bugs can mysteriously appear when simplejson is installed that didn't appear without it.

    Would you consider giving the user some control over which json library is used?

    json 
    opened by jab 39
  • send_file fails when filename contains unicode symbols

    send_file fails when filename contains unicode symbols

    Hi.

    I've detected an issue with supporting unicode filenames in send_file. If send_file attempts to respond with utf-8 in http headers, the answer is empty, the log contains something like "http-headers should containbe latin-1". I know that browser support IS A MESS, but it seems, that sending two filenames (filename= and filename*=) separated by semicolon should work.

    I'd like this to be handled by flask or werkzeug. Will you accept such pull request?

    opened by georgthegreat 38
  • host_matching is in Werkzeug since 0.7 but not in Flask

    host_matching is in Werkzeug since 0.7 but not in Flask

    having 'example.com' and 'example.org' running on the same server with the same data backend I thought it would be simple to serve both from a single Flask app, especially since Werkzeug has host_matching but it isn't.

    I currently workaround this by 'injecting' hostname into urls with nginx's url rewrites but this is a bit too hackish, you know.

    I would like to have syntax like this:

    @app.route("/", host="example.org")
    def hello():
        return "Hello World!"
    
    opened by constb 37
  • Message Flashing's implementation is broken and should be removed anyway

    Message Flashing's implementation is broken and should be removed anyway

    Message flashing as implemented in Flask is currently broken, under certain conditions it's possible for messages to be flashed to the wrong tab or in extreme cases the wrong device/browser.

    A correct implementation would require functionality beyond Flask's scope, message flashing itself is arguably beyond Flask's scope already.

    Why not make a piss-poor user account system that exists solely in session cookies? It seems like the same logic behind Flask's message flashing functionality.

    opened by mcilrain 35
  • Incomplete mod_wsgi documentation

    Incomplete mod_wsgi documentation

    I have been having issues for 3-4 days now to get a hello world up and running on the remote server. I figured out that it would be nice if there was a documentation from A-Z how to get that done and working.

    http://flask.pocoo.org/docs/deploying/mod_wsgi/

    The current documentation does not provide an example what to put into an exact python file, and what url to open up in the web browser to get the desired python module running on the remote server. It is okay to have references to other places if that is more logical, but the idea is to have a self-contained page which I can start reading, and by I reach the end, I will have a working remote hello world.

    This would be well appreciated.

    opened by lpapp 35
  • Add `async` support

    Add `async` support

    This will require Python 2 support to be dropped, which as I understand isn't likely to happen till 2020. Which is a bonus as it gives time to consider this change and the implications of it. (I also need to spend some time cleaning up this implementation, yet it serves as a proof of concept).

    I've written this blog post to add some extra context, but I see a key aspect to this change is that whilst it adds async support it does not do so throughout and specifically does not support ASGI. This means that Flask is constrained (when using async) to have worse performance than the ASGI equivalents. This is necessary as I don't think Flask can be async throughout (or support ASGI) whilst being backwards compatible. Yet this change is good overall, in that users would be able to add some async usage to their existing codebases. I would also like to note that they can switch to Quart if their usage becomes mostly async.

    This allows for async functions to be passed to the Flask class instance, for example as a view function,

    @app.route("/")
    async def index():
        return "Async hello"
    

    this comes with a cost though of poorer performance than using the sync equivalent.

    async 
    opened by pgjones 34
  • Nestable blueprints

    Nestable blueprints

    I'd like to be able to register "sub-blueprints" using Blueprint.register_blueprint(*args, **kwargs). This would register the nested blueprints with an app when the "parent" is registered with it. All parameters are preserved, other than url_prefix, which is handled similarly to in add_url_rule. A naíve implementation could look like this:

    class Blueprint(object):
        ...
    
        def register_blueprint(self, blueprint, **options):
            def deferred(state):
                url_prefix = options.get('url_prefix')
                if url_prefix is None:
                    url_prefix = blueprint.url_prefix
                if 'url_prefix' in options:
                    del options['url_prefix']
    
                state.app.register_blueprint(blueprint, url_prefix, **options)
            self.record(deferred)
    
    blueprints 
    opened by teozkr 33
  • Flask Multi-Server Development Hooks

    Flask Multi-Server Development Hooks

    I don't have a good description for the issue yet but one of the issues I keep running into myself in 2017 is that it's not convenient to marry Flask and webpack. The issue here is that one wants to both have a server app as well as a client app and each uses a hot reloader for code.

    There is a lot of boilerplate to make two services work and there is absolutely no support on the side of Flask to make it work. So here is what Flask most likely should do:

    Environment Awareness

    Flask needs to know about environments. For now I would propose to mirror the node model where we have an environment flag and depending on the environment flag some flags get flipped automatically. In development for instance we would turn on debug by default. This discourages apps to make too many assumptions about the debug flag but instead use an environment flag instead.

    This means debug can be flipped on and off in development mode. A potential webpack integration extension can then forward that flag to webpack.

    Proxy or be-proxied Capabilities

    Right now one either needs front/backend to be running different servers on different ports or use some manual proxy setup to make this work. Right now the webpack server can pass through to the Flask server but it's quite hacky and non trivial.

    In an ideal case Flask in development mode can spawn another process (like a webpack server, ngrok etc.) and manage this process. It would work independently of the Flask reloader but shut down together.

    If it spawns a process on a different port Flask should itself be proxied through that other server or proxy to another server if that's easier. This would most likely require that the Werkzeug server learns HTTP proxying as we might not be able to do this on the WSGI level.

    opened by mitsuhiko 31
  • Bump dessant/lock-threads from 3 to 4

    Bump dessant/lock-threads from 3 to 4

    Bumps dessant/lock-threads from 3 to 4.

    Release notes

    Sourced from dessant/lock-threads's releases.

    v4.0.0

    Learn more about this release from the changelog.

    Changelog

    Sourced from dessant/lock-threads's changelog.

    4.0.0 (2022-12-04)

    ⚠ BREAKING CHANGES

    • the action now requires Node.js 16

    Bug Fixes

    3.0.0 (2021-09-27)

    ⚠ BREAKING CHANGES

    • input parameter names have changed

      Rename the following input parameters when upgrading from v2 to v3:

      • issue-lock-inactive-days --> issue-inactive-days
      • issue-exclude-created-before --> exclude-issue-created-before
      • issue-exclude-labels --> exclude-any-issue-labels
      • issue-lock-labels --> add-issue-labels
      • issue-lock-comment --> issue-comment
      • pr-lock-inactive-days --> pr-inactive-days
      • pr-exclude-created-before --> exclude-pr-created-before
      • pr-exclude-labels --> exclude-any-pr-labels
      • pr-lock-labels --> add-pr-labels
      • pr-lock-comment --> pr-comment

    Features

    • add new filtering and labeling options, update input parameter names (26fd836)
    • allow manual triggering (a0c7da3)

    2.1.2 (2021-08-17)

    Bug Fixes

    • ignore error when commenting on issue converted to discussion (60d2a1a), closes #24

    2.1.1 (2021-07-09)

    Bug Fixes

    • update GitHub API calls (a3ccc71)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Type of SessionMixin underspecified, flask.session.get() fails strict type-check

    Type of SessionMixin underspecified, flask.session.get() fails strict type-check

    To reproduce:

    from flask import session
    
    session.get("foo")
    

    Produces a pyright/Pylance error in VSCode in strict typing mode:

    Type of "get" is partially unknown
      Type of "get" is "Overload[(__key: Unknown, /) -> (Unknown | None), (__key: Unknown, /, default: Unknown | [email protected]) -> (Unknown | [email protected])]"Pylance[reportUnknownMemberType]
    

    mypy --strict doesn't seem to mind, but it also accepts session.get({"a": 7}) without complaint, so perhaps not a good measure.

    Changing the offending line like this fixes the problem:

    cast(MutableMapping[str, Any], session).get("foo")
    

    Based on this observation I changing this line in the SessionMixin declaration, which also fixes the problem: https://github.com/pallets/flask/blob/main/src/flask/sessions.py#L21

    # --- from ---
    class SessionMixin(MutableMapping):
    
    # --- to ---
    class SessionMixin(MutableMapping[t.Hashable, t.Any]):
    

    I'm not sure if I've gotten those types exactly right, I believe they are the broadest possible types, but perhaps keys are limited to str or values could be narrowed.

    Happy to submit a pull request if that's a help. Thanks so much for Flask, it is an immensely important contribution to the Python ecosystem I make my living in :)

    Environment:

    • Python version: 3.10.7
    • Flask version: 2.2.2
    typing 
    opened by scanny 1
  • docs should explain the `@setupmethod` behavior

    docs should explain the `@setupmethod` behavior

    The appcontext documentation should explain the new @setupmethod 'shell_context_process' behavior, linked to https://github.com/pallets/flask/pull/4577.

    Flask raises an Assertion Error.

    AssertionError: The setup method 'shell_context_processor' can no longer be called on the application. It has already handled its first request, any changes will not be applied consistently. Make sure all imports, decorators, functions, etc. needed to set up the application are done before running it.

    The error should be documented, and a correct implementation should be provided.

    docs 
    opened by HLFH 1
  • Fix subdomain inheritance for nested blueprints.

    Fix subdomain inheritance for nested blueprints.

    When child blueprints are mounted onto parents, they don't inherit the subdomain set by the parent.

    This PR ensures that routes in child blueprint will be available at the same subdomain set by the parent.

    However, children can also specify their own subdomain if necessary.

    • fixes #4834

    Checklist:

    • [x] Add tests that demonstrate the correct behavior of the change. Tests should fail without the change.
    • [x] Add or update relevant docs, in the docs folder and in code.
    • [x] Add an entry in CHANGES.rst summarizing the change and linking to the issue.
    • [x] Add .. versionchanged:: entries in any relevant code docs.
    • [x] Run pre-commit hooks and fix any issues.
    • [x] Run pytest and tox, no tests failed.
    opened by confuzeus 0
  • Celery Background Tasks: Property

    Celery Background Tasks: Property "Task" defined in "Celery" is read-only

    Currently, the documentation says to replace celery.Task with a custom ContextTask. But this raises an error using mypy:

    $ cat minimal.py 
    from flask import Flask
    from celery import Celery, Task
    
    def make_celery(app: Flask):
        celery = Celery(app.import_name)
        celery.conf.update(app.config["CELERY_CONFIG"])
    
        class ContextTask(Task):
            def __call__(self, *args, **kwargs):
                with app.app_context():
                    return self.run(*args, **kwargs)
    
        celery.Task = ContextTask
        return celery
    $ mypy minimal.py
    minimal.py:13: error: Property "Task" defined in "Celery" is read-only
    minimal.py:13: error: Incompatible types in assignment (expression has type "Type[ContextTask]", variable has type "Task[Any]")
    

    Instead one should initialize Celery with a string of the desired Task class. See Celery docs.

    $ cat minimal.py 
    from flask import Flask
    from celery import Celery, Task
    
    
    class ContextTask(Task):
        def __call__(self, *args, **kwargs):
            with app.app_context():
                return self.run(*args, **kwargs)
    
    
    def make_celery(app: Flask):
        celery = Celery(app.import_name, task_cls="minimal.minimal:ContextTask")
        celery.conf.update(app.config["CELERY_CONFIG"])
    
        return celery
    $ mypy minimal.py
    Success: no issues found in 1 source file
    
    docs 
    opened by sr-verde 0
Releases(2.2.2)
  • 2.2.2(Aug 8, 2022)

    This is a fix release for the 2.2.0 feature release.

    • Changes: https://flask.palletsprojects.com/en/2.2.x/changes/#version-2-2-1
    • Milestone: https://github.com/pallets/flask/milestone/25?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.2.1(Aug 3, 2022)

    This is a fix release for the 2.2.0 feature release.

    • Changes: https://flask.palletsprojects.com/en/2.2.x/changes/#version-2-2-1
    • Milestone: https://github.com/pallets/flask/milestone/23?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.2.0(Aug 2, 2022)

    This is a feature release, which includes new features and removes previously deprecated code. The 2.2.x branch is now the supported bug fix branch, the 2.1.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades.

    • Changes: https://flask.palletsprojects.com/en/2.2.x/changes/#version-2-2-0
    • Milestone: https://github.com/pallets/flask/milestone/19?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.1.3(Jul 13, 2022)

    • Changes: https://flask.palletsprojects.com/en/2.1.x/changes/#version-2-1-3
    • Milestone: https://github.com/pallets/flask/milestone/22?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.1.2(Apr 28, 2022)

    This is a fix release for the 2.1.0 feature release.

    • Changes: https://flask.palletsprojects.com/en/2.1.x/changes/#version-2-1-2
    • Milestone: https://github.com/pallets/flask/milestone/21?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.1.1(Mar 30, 2022)

    This is a fix release for the 2.1.0 feature release.

    • Changes: https://flask.palletsprojects.com/en/2.1.x/changes/#version-2-1-1
    • Milestone: https://github.com/pallets/flask/milestone/18?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.1.0(Mar 28, 2022)

    This is a feature release, which includes new features and removes previously deprecated features. The 2.1.x branch is now the supported bugfix branch, the 2.0.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades.

    • Changes: https://flask.palletsprojects.com/en/2.1.x/changes/#version-2-1-0
    • Milestone: https://github.com/pallets/flask/milestone/13?closed=1

    We also encourage upgrading to the latest versions of the other Pallets projects as well.

    • Werkzeug 2.1 changes: https://werkzeug.palletsprojects.com/en/2.1.x/changes/#version-2-1-0
    • Jinja 3.1 changes: https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-1
    • Click 8.1 changes: https://click.palletsprojects.com/en/8.1.x/changes/#version-8-1-0
    • MarkupSafe 2.1 changes: https://markupsafe.palletsprojects.com/en/2.1.x/changes/#version-2-1-1
    • ItsDangerous 2.1 changes: https://itsdangerous.palletsprojects.com/en/2.1.x/changes/#version-2-1-2
    Source code(tar.gz)
    Source code(zip)
  • 2.0.3(Feb 14, 2022)

    • Changes: https://flask.palletsprojects.com/en/2.0.x/changes/#version-2-0-3
    • Milestone: https://github.com/pallets/flask/milestone/17?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.0.2(Oct 4, 2021)

  • 2.0.1(May 21, 2021)

  • 2.0.0(May 12, 2021)

    New major versions of all the core Pallets libraries, including Flask 2.0, have been released! :tada:

    • Read the announcement on our blog: https://palletsprojects.com/blog/flask-2-0-released/
    • Read the full list of changes: https://flask.palletsprojects.com/changes/#version-2-0-0
    • Retweet the announcement on Twitter: https://twitter.com/PalletsTeam/status/1392266507296514048
    • Follow our blog, Twitter, or GitHub to see future announcements.

    This represents a significant amount of work, and there are quite a few changes. Be sure to carefully read the changelog, and use tools such as pip-compile and Dependabot to pin your dependencies and control your updates.

    Source code(tar.gz)
    Source code(zip)
  • 2.0.0rc2(May 3, 2021)

  • 2.0.0rc1(Apr 16, 2021)

  • 1.1.2(Apr 3, 2020)

    1.1.x is the last version to support Python 2.7 and Python 3.5. It also contains deprecation warnings for code that will be removed in 2.0. Please pay attention to deprecation warnings in your project!

    This release contains a couple bug fixes.

    • Changelog: https://flask.palletsprojects.com/en/1.1.x/changelog/#version-1-1-2
    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Jul 9, 2019)

  • 1.1.0(Jul 9, 2019)

  • 1.0.4(Jul 9, 2019)

  • 1.0.3(Jul 9, 2019)

  • 1.0.2(May 2, 2018)

  • 1.0.1(Apr 30, 2018)

  • 0.12.4(Apr 30, 2018)

  • 1.0(Apr 26, 2018)

    The Pallets team is pleased to release Flask 1.0. [Read the announcement on our blog.](https://www.palletsprojects.com/blog/flask-1-0-released/

    There are over a year's worth of changes in this release. Many features have been improved or changed. Read the changelog to understand how your project's code will be affected.

    JSON Security Fix

    Flask previously decoded incoming JSON bytes using the content type of the request. Although JSON should only be encoded as UTF-8, Flask was more lenient. However, Python includes non-text related encodings that could result in unexpected memory use by a request.

    Flask will now detect the encoding of incoming JSON data as one of the supported UTF encodings, and will not allow arbitrary encodings from the request.

    Install or Upgrade

    Install from PyPI with pip:

    pip install -U Flask
    
    Source code(tar.gz)
    Source code(zip)
    Flask-1.0-py2.py3-none-any.whl(95.49 KB)
    Flask-1.0-py2.py3-none-any.whl.asc(488 bytes)
    Flask-1.0.tar.gz(628.36 KB)
    Flask-1.0.tar.gz.asc(488 bytes)
  • 0.12.3(Apr 26, 2018)

    This release includes an important security fix for JSON and a minor backport for CLI support in PyCharm. It is provided for projects that cannot update to Flask 1.0 immediately. See the 1.0 announcement and update to it instead if possible.

    JSON Security Fix

    Flask previously decoded incoming JSON bytes using the content type of the request. Although JSON should only be encoded as UTF-8, Flask was more lenient. However, Python includes non-text related encodings that could result in unexpected memory use by a request.

    Flask will now detect the encoding of incoming JSON data as one of the supported UTF encodings, and will not allow arbitrary encodings from the request.

    Upgrade

    Upgrade from PyPI with pip. Use a version identifier if you want to stay at 0.12:

    pip install -U 'Flask~=0.12.3'
    

    Or upgrade to 1.0:

    pip install -U Flask
    
    Source code(tar.gz)
    Source code(zip)
    Flask-0.12.3-py2.py3-none-any.whl(86.29 KB)
    Flask-0.12.3-py2.py3-none-any.whl.asc(488 bytes)
    Flask-0.12.3.tar.gz(518.92 KB)
    Flask-0.12.3.tar.gz.asc(488 bytes)
The Web framework for perfectionists with deadlines.

Django Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Thanks for checking it out. All docu

Django 67.9k Dec 29, 2022
Serverless Python

Zappa - Serverless Python About Installation and Configuration Running the Initial Setup / Settings Basic Usage Initial Deployments Updates Rollback S

Rich Jones 11.9k Jan 01, 2023
Flask Sugar is a web framework for building APIs with Flask, Pydantic and Python 3.6+ type hints.

Flask Sugar is a web framework for building APIs with Flask, Pydantic and Python 3.6+ type hints. check parameters and generate API documents automatically. Flask Sugar是一个基于flask,pyddantic,类型注解的API框架

162 Dec 26, 2022
PipeLayer is a lightweight Python pipeline framework

PipeLayer is a lightweight Python pipeline framework. Define a series of steps, and chain them together to create modular applications

greaterthan 64 Jul 21, 2022
An easy-to-use high-performance asynchronous web framework.

An easy-to-use high-performance asynchronous web framework.

Aber 264 Dec 31, 2022
The little ASGI framework that shines. ?

✨ The little ASGI framework that shines. ✨ Documentation: https://www.starlette.io/ Community: https://discuss.encode.io/c/starlette Starlette Starlet

Encode 7.7k Jan 01, 2023
CherryPy is a pythonic, object-oriented HTTP framework. https://docs.cherrypy.org/

Welcome to the GitHub repository of CherryPy! CherryPy is a pythonic, object-oriented HTTP framework. It allows building web applications in much the

CherryPy 1.6k Dec 29, 2022
The source code to the Midnight project

MidnightSniper Started: 24/08/2021 Ended: 24/10/2021 What? This is the source code to a project developed to snipe minecraft names Why release? The ad

Kami 2 Dec 03, 2021
Restful API framework wrapped around MongoEngine

Flask-MongoRest A Restful API framework wrapped around MongoEngine. Setup from flask import Flask from flask_mongoengine import MongoEngine from flask

Close 525 Jan 01, 2023
Fully featured framework for fast, easy and documented API development with Flask

Flask RestPlus IMPORTANT NOTICE: This project has been forked to Flask-RESTX and will be maintained by by the python-restx organization. Flask-RESTPlu

Axel H. 2.7k Jan 04, 2023
Swagger/OpenAPI First framework for Python on top of Flask with automatic endpoint validation & OAuth2 support

Connexion Connexion is a framework that automagically handles HTTP requests based on OpenAPI Specification (formerly known as Swagger Spec) of your AP

Zalando SE 4.2k Jan 07, 2023
Web3.py plugin for using Flashbots' bundle APIs

This library works by injecting a new module in the Web3.py instance, which allows submitting "bundles" of transactions directly to miners. This is do

Flashbots 293 Dec 31, 2022
Asynchronous HTTP client/server framework for asyncio and Python

Async http client/server framework Key Features Supports both client and server side of HTTP protocol. Supports both client and server Web-Sockets out

aio-libs 13.2k Jan 05, 2023
Asita is a web application framework for python based on express-js framework.

Asita is a web application framework for python. It is designed to be easy to use and be more easy for javascript users to use python frameworks because it is based on express-js framework.

Mattéo 4 Nov 16, 2021
Pyramid - A Python web framework

Pyramid Pyramid is a small, fast, down-to-earth, open source Python web framework. It makes real-world web application development and deployment more

Pylons Project 3.7k Dec 30, 2022
Containers And REST APIs Workshop

Containers & REST APIs Workshop Containers vs Virtual Machines Ferramentas Podman: https://podman.io/ Docker: https://www.docker.com/ IBM CLI: https:/

Vanderlei Munhoz 8 Dec 16, 2021
Web APIs for Django. 🎸

Django REST framework Awesome web-browsable Web APIs. Full documentation for the project is available at https://www.django-rest-framework.org/. Fundi

Encode 24.7k Jan 03, 2023
A microservice written in Python detecting nudity in images/videos

py-nudec py-nudec (python nude detector) is a microservice, which scans all the images and videos from the multipart/form-data request payload and sen

Michael Grigoryan 8 Jul 09, 2022
Daniel Vaz Gaspar 4k Jan 08, 2023
Pyrin is an application framework built on top of Flask micro-framework to make life easier for developers who want to develop an enterprise application using Flask

Pyrin A rich, fast, performant and easy to use application framework to build apps using Flask on top of it. Pyrin is an application framework built o

Mohamad Nobakht 10 Jan 25, 2022