{"id":16347076,"url":"https://github.com/ospoon/flask-server","last_synced_at":"2025-08-04T06:13:08.247Z","repository":{"id":52300284,"uuid":"223886191","full_name":"OSpoon/flask-server","owner":"OSpoon","description":"使用flask开发整套服务","archived":false,"fork":false,"pushed_at":"2023-02-16T06:28:55.000Z","size":114,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-19T05:05:48.509Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OSpoon.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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-11-25T07:22:47.000Z","updated_at":"2022-08-12T07:20:23.000Z","dependencies_parsed_at":"2024-11-07T11:47:12.765Z","dependency_job_id":"218be027-e21e-41cf-a2e5-b9506442fa6a","html_url":"https://github.com/OSpoon/flask-server","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/OSpoon/flask-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2Fflask-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2Fflask-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2Fflask-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2Fflask-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OSpoon","download_url":"https://codeload.github.com/OSpoon/flask-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2Fflask-server/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268656907,"owners_count":24285406,"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-04T02:00:09.867Z","response_time":79,"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":[],"created_at":"2024-10-11T00:39:35.114Z","updated_at":"2025-08-04T06:13:07.997Z","avatar_url":"https://github.com/OSpoon.png","language":"Python","readme":"# flask-server\n\n使用flask开发整套服务\n\n## 初始化虚拟环境\n\n安装命令: ` pip install pipenv `\n\n**创建环境**: `pipenv --three`\n\n其他命令:\n\n```python\npipenv --three   会使用当前系统的Python3创建环境\npipenv --python 3.6 指定某一Python版本创建环境\npipenv shell 激活虚拟环境\npipenv --where  显示目录信息\npipenv --venv  显示虚拟环境信息\npipenv --py  显示Python解释器信息\npipenv install requests 安装相关模块并加入到Pipfile\npipenv install django==1.11 安装固定版本模块并加入到Pipfile\npipenv graph 查看目前安装的库及其依赖\n```\n\n**PyCharm指定虚拟环境**:\n\n1. File-\u003eSettings-Project:flask-server-\u003eProject Interpreter\n2. 选择Show All\n3. 点击加号-\u003e选择Add Local\n4. 选择Existing environment\n5. 执行pipenv --venv查看虚拟环境地址并找到`\\Scripts\\python.exe`\n6. 依次点击OK完成\n\n\n\n## 使用flask-script启动服务:\n\n`python manage.py runserver -h 127.0.0.1 -p 8090`\n\n## 数据库创建\n\nmanage.py添加app,db,model到shell上下文:\n\n```python\ndef make_shell_context():\n    return dict(app=app, db=db, DateModel=DateModel)\n\n\nmanager.add_command(\"shell\", Shell(make_context=make_shell_context))\n```\n\n\n\n## 使用@manager.command自定义命令 \n\n创建命令:\n\n```python\n@manager.command\ndef create_data():\n    print(\"create_data start\")\n    all_date_list = getAllDayPerYear(\"2020\")\n    for date in all_date_list:\n        print('插入 : ', date)\n        now_date = datetime.datetime.strptime(date,\"%Y-%m-%d\")\n        if now_date.weekday() == 5 or now_date.weekday() == 6:\n            db.session.add(DateModel(now_date, False))\n        else:\n            db.session.add(DateModel(now_date, True))\n        db.session.commit()\n    print(\"create_data end\")\n```\n\n\n\n执行命令: `python manage.py create_data`\n\n## flask-restful flasgger API-文档\n\n*主要记录flasgger的安装及基本使用过程:*\n\n**安装flasgger**\n```python\npip install flasgger\n```\n\n**初始化flasgger**\n```python\nfrom flasgger import Swagger\n\nswagger = Swagger()\n\ndef init_swagger_plugin(app):    \n    swagger.init_app(app)\n\ndef create_app(config_name):\n    app = Flask(__name__)\n    init_swagger_plugin(app)\n    return app\n```\n\n**配置flasgger参数**\n```python\nSWAGGER = {    'title': 'ShortUrl API',    'uiversion': 3}\n```\n\n**配置接口描述yml文件**\n*get接口*\n```yml\n通过id获取长连接\n---\nparameters:\n  - name: id\n    in: '使用长连接生成的id'\n    type: string\n    required: true\n    enum: ['csdisjzaf']\n    default: 'csdisjzaf'\nresponses:\n  200:\n    description: '查询成功后返回id指定的长连接'\n    schema:\n      $ref: '#/definitions/ShortUrlGetResp'\n    examples:\n      data: 'https://blog.csdn.net/lanyang123456/article/details/80717250'\ndefinitions:\n  ShortUrlGetResp:\n    type: object\n    properties:\n      data:\n        type: string\n```\n*post接口*\n```yml\n根据传入的长连接生成短连接\n---\nparameters:\n  - name: source\n    in: '使用长连接生成的id'\n    type: string\n    required: true\n    enum: '{\"source\":\"https://blog.csdn.net/lanyang123456/article/details/80717250\"}'\n    default: '{\"source\":\"https://blog.csdn.net/lanyang123456/article/details/80717250\"}'\nresponses:\n  200:\n    description: '返回生成的短连接'\n    schema:\n      $ref: '#/definitions/ShortUrlPostResp'\n    examples:\n      data: '{\"short\": \"http://localhost:5000/surl/csdisjzaf\"}'\ndefinitions:\n  ShortUrlPostResp:\n    type: object\n    properties:\n      short:\n        type: string\n```\n\n**改造flask_restful-\u003eResource**\n*指定函数配置接口yml文件*\n```python\nclass ShortUrl(Resource):\n\n    @swag_from('short_url_get.yml')\n    def get(self, id):\n    \n    @swag_from('short_url_post.yml')\n    def post(self):\n\n```\n\n**访问预览**\n```\nhttp://localhost:5000/apidocs/#/\n```\n\n**问题解决**\n如果你在使用flask-restful有以下形式的配置,可能生成的接口文档每个接口会生成按多个路由生成多份\n```\napi.add_resource(ShortUrl, '/surl', '/surl/\u003cid\u003e')\n```\n要解决这个现象,请进行以下配置:\n1. 拆分resource,指明endpoint\n```python\napi.add_resource(ShortUrl, '/surl', endpoint=\"surl_post\")\napi.add_resource(ShortUrl, '/surl/\u003cid\u003e', endpoint=\"surl_get\")\n```\n2. 为swag_from增加endpoint配置\n```python\n@swag_from('short_url_get.yml', endpoint='surl_get')\n\n@swag_from('short_url_post.yml', endpoint='surl_post')\n```\n\n## 应用flasgger实现swagger文档查看\n\n` http://127.0.0.1:9999/apidocs/ `\n\n## PyCharm配置使用Flask-Script启动以及开启Debug模式\n\n####  配置PyCharm中的启动参数\n\n1. 点击“Edit Configuartions” \n\n   ![00001](./sources/00001.png)\n\n2. 对运行时和运行环境做相关配置 \n\n   ![00002](./sources/00002.png)\n\n####  开启Debug模式 \n\n```python\nfrom flask.ext.script import Manager, Server\n \napp = Flask(__name__)\nmanager = Manager(app)\nmanager.add_command(\"runserver\", Server(use_debugger=True))\n \n \nif __name__ == \"__main__\":\n    manager.run()\n```\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fospoon%2Fflask-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fospoon%2Fflask-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fospoon%2Fflask-server/lists"}