{"id":21497996,"url":"https://github.com/meteorix/flaskweb","last_synced_at":"2025-08-13T21:36:31.860Z","repository":{"id":80183244,"uuid":"181429090","full_name":"Meteorix/flaskweb","owner":"Meteorix","description":"An easy to start yet full-featured web framework","archived":false,"fork":false,"pushed_at":"2019-08-15T06:03:00.000Z","size":3504,"stargazers_count":31,"open_issues_count":0,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-22T11:37:50.269Z","etag":null,"topics":["boilerplate","flask","framework"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Meteorix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-15T06:51:39.000Z","updated_at":"2021-11-03T22:26:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"a1a0de9a-36b7-44e6-a862-479f2d9875a0","html_url":"https://github.com/Meteorix/flaskweb","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/Meteorix/flaskweb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meteorix%2Fflaskweb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meteorix%2Fflaskweb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meteorix%2Fflaskweb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meteorix%2Fflaskweb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Meteorix","download_url":"https://codeload.github.com/Meteorix/flaskweb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meteorix%2Fflaskweb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270321690,"owners_count":24564630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boilerplate","flask","framework"],"created_at":"2024-11-23T16:33:31.147Z","updated_at":"2025-08-13T21:36:31.855Z","avatar_url":"https://github.com/Meteorix.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Flaskweb\n========\nAn easy to start yet [full-featured](#features) web framework\n\n* [Installation](#installation)\n* [Quickstart](#quickstart)\n* [Features](#features)\n    * [more todos](#more-todos)\n* [Tutorial](#tutorial)\n    * [10分钟速成版](#10分钟速成版)\n    * [Serious python web developer version \u003cg-emoji class=\"g-emoji\" alias=\"alien\" fallback-src=\"https://github.githubassets.com/images/icons/emoji/unicode/1f47d.png\"\u003e👽\u003c/g-emoji\u003e](#serious-python-web-developer-version-alien)\n* [Development](#development)\n* [Distribution](#distribution)\n* [Thanks](#thanks)\n\n# Installation\n```bash\npip install -U flaskweb\n\n# or git clone and install; git pull for later updates\ngit clone git@github.com:Meteorix/flaskweb.git\npip install -e flaskweb\n```\n\n# Quickstart\n基本语法与flask几乎一样，几行代码即可构建一个web服务器\n```python\nfrom flaskweb.app import create_app, gevent_run\nfrom flask import render_template\n\napp = create_app(\"debug\")\n\n@app.route(\"/\")\ndef index():\n    return render_template(\"debug.html\")\n\nif __name__ == \"__main__\":\n    gevent_run(app)\n```\n不一样的地方在于，上面的web服务器自带：\n*   用户登录系统\n*   orm/migrate\n*   db管理页面\n*   swaggerui\n*   gevent服务器\n\n|||\n|-------|---------|\n|![main](./docs/images/main.jpg)|![!login](./docs/images/login.jpg)|\n|![!api](./docs/images/api.jpg) |![!admin](./docs/images/admin.jpg)|\n\n\ntry it:\n```bash\ncd simple\n# 初始化数据库，会保存到simple/app.db\nflask db init\nflask db upgrade\nflask db migrate\n# 运行gevent服务器\npython -u app.py\n```\nthen visit http://127.0.0.1:5000/\n\nA more [sophisticated example](./example)\n\n\n# Features\n*   flask\n*   sqlalchemy\n*   config\n*   logger\n*   user login\n*   db admin\n*   restful api with swagger ui\n*   gevent\n*   use as a 3rd library\n*   frontend with bootstrap/jquery\n*   setup.py for distribution\n*   cythonize\n*   gunicorn\n\n## more todos\n*   celery\n*   nginx\n*   more samples: tensorflow/pytorch webapp\n*   jwt\n*   pyinstaller\n*   dockerfile\n*   performance/benchmark\n\n# Tutorial\n\n## 10分钟速成版\n\n假设你有python和flask基础，介绍如何利用flaskweb速成\n\n1. 创建新的项目\n\n    将[example](./example)目录copy到你的项目中，作为启动模板\n\n1. 定义url，返回默认html页面\n    ```python\n    @app.route(\"/\")\n    def index():\n        return render_template(debug.html)\n    ```\n    启动服务器，访问 http://127.0.0.1:5000/\n    ```bash\n    python wsgi.py\n    ```\n\n1. 创建sqlite数据库，使用内置的用户登录系统\n    ```bash\n    cd simple\n    # 初始化数据库，会保存到simple/app.db\n    flask db init\n    flask db migrate\n    flask db upgrade\n    ```\n    重启服务器，访问登陆页面 http://127.0.0.1:5000/login\n\n1. 当然你需要先注册用户\n\n    在注册页面上注册好之后，``debug``模式运行会自动激活账号，直接登录\n\n    非``debug``模式需要找管理员激活账号：管理员访问admin页面 [http://127.0.0.1:5000/admin/user](http://127.0.0.1:5000/admin/user)，勾选用户的``active``属性\n\n1. 定义数据库orm，使用admin页面管理\n\n    参考 [example/models.py](./example/example/models.py)\n\n1. 定义restful api，使用swagger ui调试\n\n    python代码参考 [example/views.py](./example/example/views.py), api spec参考[OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md)\n\n    访问 http://127.0.0.1:5000/apidocs/ 调试API，调试好就可以给前端工程师开发前端了\n\n1. 前端工程师输出前端代码\n\n    *   html文件放到```templates```目录\n    *   其他文件放到```static```目录\n\n1. 10分钟差不多都学会啦\n\n\n## Serious python web developer version :alien:\n1. python basics\n1. [flask quickstart](http://docs.jinkan.org/docs/flask/quickstart.html)\n1. [sql基础](http://www.runoob.com/mysql/mysql-tutorial.html)\n1. [html/css/js基础](https://www.w3cschool.cn/html/)\n1. [restful api规范](https://www.ruanyifeng.com/blog/2011/09/restful.html)\n1. ...\n1. http/tcp协议《http权威指南》\n1. linux知识《APUE》\n1. ...\n\n# Development\n\nDevelop flaskweb framework\n\n```bach\nvirtualenv venv\nsource venv/bin/activate\npip install -r requirements\n```\n\nBuild and upload to pypi\n```bash\npython setup.py build\npython setup.py sdist\npip install twine  # for pypi upload\npython -m twine upload dist/...\n```\n\n# Distribution\n\nDistribute example project using [setup.py](example/setup.py)\n\n```bash\ncd example\npython setup.py build\npython setup.py sdist --formats=zip\n```\n\nOr cythonize and dist as wheel for better encryption\n```bash\npython setup.py bdist_wheel\n```\n\ntodo: pyinstaller\n\n\n# Thanks\n*   https://github.com/miguelgrinberg/flasky\n*   https://github.com/JackStouffer/Flask-Foundation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeteorix%2Fflaskweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeteorix%2Fflaskweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeteorix%2Fflaskweb/lists"}