{"id":18644079,"url":"https://github.com/sgalcheung/python.simpleblog","last_synced_at":"2026-05-04T07:32:03.709Z","repository":{"id":43246146,"uuid":"202341726","full_name":"sgalcheung/python.SimpleBlog","owner":"sgalcheung","description":"使用flask写一个简单的blog，主要包含用户注册和登录，用户发帖，用户评论","archived":false,"fork":false,"pushed_at":"2023-06-05T02:19:53.000Z","size":643,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-27T11:19:07.702Z","etag":null,"topics":["blog","flask","python3"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/sgalcheung.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-14T12:01:04.000Z","updated_at":"2023-05-30T12:54:55.000Z","dependencies_parsed_at":"2023-01-22T23:45:52.357Z","dependency_job_id":null,"html_url":"https://github.com/sgalcheung/python.SimpleBlog","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgalcheung%2Fpython.SimpleBlog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgalcheung%2Fpython.SimpleBlog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgalcheung%2Fpython.SimpleBlog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgalcheung%2Fpython.SimpleBlog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sgalcheung","download_url":"https://codeload.github.com/sgalcheung/python.SimpleBlog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239449251,"owners_count":19640528,"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","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":["blog","flask","python3"],"created_at":"2024-11-07T06:09:53.806Z","updated_at":"2025-11-05T01:30:35.638Z","avatar_url":"https://github.com/sgalcheung.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SimpleBlog\n#### 项目描述\n本blog改编自[flask官方教程](https://flask.palletsprojects.com/en/1.1.x/tutorial/#tutorial)前端[首页](https://github.com/sgal008/web.html-and-css-visual-quickstart-guide/blob/master/chapter-12/finished-page.html)使用的是我的另一个repo[《HTML5与CSS3基础教程》](https://github.com/sgal008/web.html-and-css-visual-quickstart-guide)数据库使用的是sqlite3，模型设计采用了廖雪峰老师的[python实战项目](https://www.liaoxuefeng.com/wiki/1016959663602400/1018490658464544)blog分浏览文章的首页和个人管理中心，普通用户只能管理自己发布的文章，其中管理员可以同时管理普通用户发布的文章，但同是管理员之间不能操作对方发布的文章后台管理增加查看评论，删除评论功能，同上，普通用户自己操作自己的评论，管理员可以操作所有评论，但不包含其他管理员的评论后台管理增加查看注册用户信息功能，只允许管理员查看，删除用户会删除用户相关的文章和评论，请谨慎操作\n#### 新技能\n认识Flask框架，配置Flask安装环境，官方建议采用虚拟环境来开发和部署你的项目，Windows系统需要先安装python，通过cmd.exe安装\n```bash\nwinget install Python.Python.3.7\n```\n如果不可用先执行\n```bash\nAdd-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\n```\n#### 添加ORM框架SQLAlchemy\n\n#### 创建一个环境\n创建一个项目文件夹，其中包含一个venv文件\n```\n$ cd 你项目的存储位置\n$ mkdir myproject\n$ cd myproject\n$ python3 -m venv venv\n```\n#### 激活创建的环境\n在你开始你的项目之前，激活相应的环境，您的shell提示符将更改为显示激活环境的名称\n```\n$ . venv/bin/activate\n\u003e venv\\Scripts\\activate    # On Windows\n```\n#### 安装Flask\n```\n$ pip install Flask\n```\n#### 创建一个项目目录\n```\n$ mkdir flaskr\n$ cd flaskr\n```\n#### 应用工厂\n##### flaskr/_init_.py\n```\nflaskr/__init__.py\nimport os\n\nfrom flask import Flask\n\n\ndef create_app(test_config=None):\n    # create and configure the app\n    app = Flask(__name__, instance_relative_config=True)\n    app.config.from_mapping(\n        SECRET_KEY='dev',\n        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),\n    )\n\n    if test_config is None:\n        # load the instance config, if it exists, when not testing\n        app.config.from_pyfile('config.py', silent=True)\n    else:\n        # load the test config if passed in\n        app.config.from_mapping(test_config)\n\n    # ensure the instance folder exists\n    try:\n        os.makedirs(app.instance_path)\n    except OSError:\n        pass\n\n    # a simple page that says hello\n    @app.route('/hello')\n    def hello():\n        return 'Hello, World!'\n\n    return app\n```\n#### 运行应用程序\n对于Linux和Mac\n```\n$ export FLASK_APP=flaskr\n$ export FLASK_ENV=development\n$ flask run\n```\n对于Windows cmd，请使用set而不是export：\n```\n\u003e set FLASK_APP=flaskr\n\u003e set FLASK_ENV=development\n\u003e flask init-db           # 运行此项目需要初始化数据库\n\u003e flask run               # 出现异常，使用python -m flask run\n```\n\nPowershell:\n```\n\u003e $env:FLASK_APP=\"flaskr\"\n\u003e $env:FLASK_ENV=\"development\"\n```\n\n项目结构目录最终类似于如下\n```\n/home/user/Projects/python.SimpleBlog\n├── .vscode/              # 开发编辑器VS Code，与项目无关\n|   ├── launch.json\n|   ├── settings.json\n├── flaskr/\n│   ├── __init__.py\n│   ├── db.py\n│   ├── schema.sql\n│   ├── auth.py\n│   ├── blog.py\n│   ├── templates/\n│   │   ├── base.html\n│   │   ├── auth/\n│   │   │   ├── login.html\n│   │   │   └── register.html\n│   │   └── blog/\n│   │       ├── create.html\n│   │       ├── index.html\n│   │       └── update.html\n│   └── static/\n│       └── style.css\n├── tests/\n│   ├── conftest.py\n│   ├── data.sql\n│   ├── test_factory.py\n│   ├── test_db.py\n│   ├── test_auth.py\n│   └── test_blog.py\n├── venv/\n├── setup.py\n└── MANIFEST.in\n```\n#### 部署到生产环境\n* 项目根节点创建requirements.txt，使用以下命令，会抓取pip安装的所用包，可以只保留需要的依赖\n    ```\n    pip freeze \u003e requirements.txt\n    ```\n* 创建.env文件，添加环境变量\n* 创建Procfile文件，指定启动入口\n* 创建app.json描述项目\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgalcheung%2Fpython.simpleblog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsgalcheung%2Fpython.simpleblog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgalcheung%2Fpython.simpleblog/lists"}