{ "info": { "author": "David Yi", "author_email": "wingfish@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Build Tools" ], "description": "|Build Status| |Coverage Status| |Documentation Status|\n\npy-summer\n---------\n\n\u4e00\u4e2a\u5feb\u901f\u751f\u6210 Python Web \u9879\u76ee\u6846\u67b6\u7684\u5de5\u5177\uff0c\u7528\u6237\u65e0\u9700\u8003\u8651\u540e\u7aef\u6846\u67b6\uff08\u5373\u652f\u6301\u591a\u540e\u7aef\uff0c\u76ee\u524d\u652f\u6301 Flask \uff09\u3002\u652f\u6301\u81ea\u5b9a\u4e49\u751f\u6210\u9879\u76ee\u5c42\u7ea7\u7ed3\u6784\u3001\u63a5\u53e3\u3002\u5185\u5bb9\u5305\u542b\u6f14\u793a\u4ee3\u7801\u3001\u6d4b\u8bd5\u7528\u4f8b\u7b49\u3002\n\n\u5b89\u88c5\n----\n\nInstall and update using pip:\n\n.. code::\n\n pip install -U py-summer\n\n\u793a\u4f8b\n----\n\n1. \u751f\u6210\u4e00\u4e2a\u65b0\u9879\u76ee\n\n ::\n\n summer create -n test_project -d ./\n\n2. \u751f\u6210\u7684\u9879\u76ee\u5c42\u7ea7\u7ed3\u6784\n\n ::\n\n \u2502 .gitignore ignore \u6587\u4ef6\n \u2502 gunicorn.conf gunicorn \u914d\u7f6e\u6587\u4ef6\n \u2502 requirements.txt \u9879\u76ee\u8fd0\u884c\u6240\u9700\u4f9d\u8d56\u5305\n \u2502 server.py \u9879\u76ee\u5165\u53e3\u6587\u4ef6\n \u251c\u2500application application\n \u2502 \u2502 __init__.py\n \u2502 \u2502 router.py \u8def\u7531\n \u2502 \u251c\u2500controller \n \u2502 \u2502 hello_controller.py controller\n \u2502 \u251c\u2500model \n \u2502 \u2502 hello_model.py model\n \u2502 \u2514\u2500view \n \u2502 hello_handler.py handler\n \u251c\u2500config\n \u2502 config.py \u914d\u7f6e\u6587\u4ef6\n \u251c\u2500docker docker \u6587\u4ef6\u5939\n \u2502 docker-compose.yml\n \u2502 start.sh\n \u251c\u2500log \u65e5\u5fd7\u6587\u4ef6\u5939\n \u251c\u2500test \u6d4b\u8bd5\u7528\u4f8b\n \u2502 conftest.py\n \u2502 test_api.py\n \u2502 test_db.py\n \u2514\u2500tools \u8f85\u52a9\u65b9\u6cd5\n error.py\n\n3. \u8fd0\u884c\u9879\u76ee\n\n .. code::\n\n python server.py\n\n \u9ed8\u8ba4\u76d1\u542c\u6240\u6709\u5730\u5740\uff0c \u7aef\u53e3\u4e3a 8080\u3002\u6d4b\u8bd5\u9875\u53ef\u8bbf\u95ee\n http://127.0.0.1:8080/api/test\n\n\n\u751f\u6210\u7684\u9879\u76ee\u6a21\u5757\u8bf4\u660e\n------------------\n\u901a\u8fc7\u4e0a\u9762\u7684\u793a\u4f8b\uff0c\u6211\u4eec\u751f\u6210\u4e86\u4e00\u4e2a\u7b80\u5355\u7684 http web \u670d\u52a1\uff0c\u4e0b\u9762\u5c06\u5bf9\u751f\u6210\u7684\u76ee\u5f55\u4e2d\u5404\u6a21\u5757\u505a\u4e00\u4e0b\u4ecb\u7ecd\uff0c\u7b80\u5355\u7684\u6587\u4ef6\u5df2\u7ecf\u5728\u76ee\u5f55\u7ed3\u6784\u4e2d\u6709\u8bf4\u660e\uff0c\u8fd9\u91cc\u5c06\u4e0d\u5728\u8d58\u8ff0\u3002\n\n1. application\n\n\u8fd9\u91cc\u662f web \u5e94\u7528\u7a0b\u5e8f\u7684\u603b\u76ee\u5f55\uff0c\u91cc\u9762\u5305\u542b model/view/controller\uff0c \u5373 web \u670d\u52a1\u7684 MVC \u90e8\u5206\uff0crouter.py \u8fd9\u91cc\u662f\u8bbe\u7f6e\u6574\u4e2a\u9879\u76ee\u8def\u7531\u7684\u5730\u65b9\u3002\n\n2. config\n\nconfig \u76ee\u5f55\u662f\u6574\u4e2a\u5de5\u7a0b\u7684\u914d\u7f6e\u76ee\u5f55\uff0c\u91cc\u9762\u901a\u8fc7\u7c7b\u7684\u5f62\u5f0f\u6765\u8fdb\u884c\u5404\u79cd\u73af\u5883\u7684\u914d\u7f6e\uff0c\u901a\u8fc7 application \u4e0b\u7684 __init__.py \u6765\u5bfc\u5165\u914d\u7f6e\u4fe1\u606f\u3002\n\n3. docker\n\ndocker \u4e2d\u662f docker-compose \u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u7528\u6765\u914d\u7f6e\u9879\u76ee\u7684\u90e8\u7f72\u73af\u5883\uff0cstart.sh \u662f docker \u5bb9\u5668\u542f\u52a8\u7684\u5165\u53e3\u6587\u4ef6\u3002\n\n4. test\n\ntest \u8fd9\u91cc\u662f\u9879\u76ee\u7684\u5355\u5143\u6d4b\u8bd5\u6a21\u5757\uff0c\u91cc\u9762\u6709\u4e00\u4e2a conftest.py \u6587\u4ef6\u6765\u914d\u7f6e\u6d4b\u8bd5\u4fe1\u606f\uff0ctest_xxx.py \u6587\u4ef6\u662f\u5177\u4f53\u7684\u5355\u5143\u6d4b\u8bd5\u6587\u4ef6\uff0c\u8fd9\u91cc\u4f7f\u7528 pytest.fixture \u6253\u901a server/client \u8fdb\u884c\u6d4b\u8bd5\uff0c\u6d4b\u8bd5\u65f6\u65e0\u9700\u989d\u5916\u542f\u52a8 server \u5373\u53ef\u6d4b\u8bd5 server \u63a5\u53e3\u3002\n\n\n\n\u540e\u7eed\u8ba1\u5212\n--------\n\n1. \u96c6\u6210 Flask \u5e38\u7528\u529f\u80fd\u6a21\u5757\n\n \u76ee\u524d\u8ba1\u5212\u96c6\u6210\u529f\u80fd\u70b9\u5982\u4e0b\uff1a\n - \u542f\u52a8\u65b9\u5f0f\n - \u8def\u7531\u5904\u7406\n - \u6570\u636e\u5e93\u5904\u7406\n - \u5f02\u5e38\u5904\u7406\n - \u5e38\u7528\u63d2\u4ef6\n\n\n2. \u652f\u6301\u63a5\u53e3\u6839\u636e\u914d\u7f6e\u6587\u4ef6\u81ea\u52a8\u751f\u6210\uff0c\u8fdb\u4e00\u6b65\u63d0\u9ad8\u4ee3\u7801\u89c4\u8303\uff0c\u5f00\u53d1\u6548\u7387\u3002\n\n.. |Build Status| image:: https://travis-ci.org/chinapnr/py-summer.svg?branch=master\n :target: https://travis-ci.org/chinapnr/py-summer\n.. |Coverage Status| image:: https://coveralls.io/repos/github/chinapnr/py-summer/badge.svg?branch=master\n :target: https://coveralls.io/github/chinapnr/py-summer?branch=master\n.. |Documentation Status| image:: https://readthedocs.org/projects/py-summer/badge/?version=latest\n :target: https://py-summer.readthedocs.io/zh/latest/?badge=latest\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/chinapnr/py-summer", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "py_summer", "package_url": "https://pypi.org/project/py_summer/", "platform": "", "project_url": "https://pypi.org/project/py_summer/", "project_urls": { "Homepage": "https://github.com/chinapnr/py-summer" }, "release_url": "https://pypi.org/project/py_summer/0.0.2/", "requires_dist": null, "requires_python": "", "summary": "\u4e00\u4e2a\u5feb\u901f\u751f\u6210 Python Web \u9879\u76ee\u6846\u67b6\u7684\u5de5\u5177", "version": "0.0.2" }, "last_serial": 4625545, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "8b24d4be49c1cec705f239e5eb22a055", "sha256": "4215418bfce82ac8cf171573e29ffbd9fbfaa08ccfa6fc0464dd8021fea29459" }, "downloads": -1, "filename": "py_summer-0.0.1.tar.gz", "has_sig": false, "md5_digest": "8b24d4be49c1cec705f239e5eb22a055", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9487, "upload_time": "2018-11-09T13:04:53", "url": "https://files.pythonhosted.org/packages/de/e7/3cf6d86af589fd889b497639410d3b0eb6b45a6353428e8d1916b9fff2cf/py_summer-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "4e338d3708c514fa843deb91cab52568", "sha256": "cd7753a2e06cbe96828ac56dc6df833bde1c29e4e14efa9aff88b5b7d027c0cb" }, "downloads": -1, "filename": "py_summer-0.0.2.tar.gz", "has_sig": false, "md5_digest": "4e338d3708c514fa843deb91cab52568", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9837, "upload_time": "2018-12-21T15:45:29", "url": "https://files.pythonhosted.org/packages/4a/bf/7b883df67aebcfddc85062f14f7dd554345665670e2c6713306b67d277de/py_summer-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4e338d3708c514fa843deb91cab52568", "sha256": "cd7753a2e06cbe96828ac56dc6df833bde1c29e4e14efa9aff88b5b7d027c0cb" }, "downloads": -1, "filename": "py_summer-0.0.2.tar.gz", "has_sig": false, "md5_digest": "4e338d3708c514fa843deb91cab52568", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9837, "upload_time": "2018-12-21T15:45:29", "url": "https://files.pythonhosted.org/packages/4a/bf/7b883df67aebcfddc85062f14f7dd554345665670e2c6713306b67d277de/py_summer-0.0.2.tar.gz" } ] }