Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Awesome Cheatsheets | 33,706 | 5 days ago | 84 | mit | JavaScript | |||||
👩💻👨💻 Awesome cheatsheets for popular programming languages, frameworks and development tools. They include everything you should know in one single file. | ||||||||||
Cookiecutter Django | 10,572 | 1 | 3 hours ago | 5 | January 15, 2018 | 102 | bsd-3-clause | Python | ||
Cookiecutter Django is a framework for jumpstarting production-ready Django projects quickly. | ||||||||||
Plane | 9,612 | 4 hours ago | 103 | apache-2.0 | TypeScript | |||||
🔥 🔥 🔥 Open Source JIRA, Linear and Height Alternative. Plane helps you track your issues, epics, and product roadmaps in the simplest way possible. | ||||||||||
Recipes | 4,086 | a day ago | 275 | other | HTML | |||||
Application for managing recipes, planning meals, building shopping lists and much much more! | ||||||||||
Linkding | 3,466 | 9 days ago | 71 | mit | Python | |||||
Self-hosted bookmark manager that is designed be to be minimal, fast, and easy to set up using Docker. | ||||||||||
Viper | 3,043 | 14 days ago | 5 | bsd-3-clause | ||||||
Redteam operation platform with webui 图形化红队行动辅助平台 | ||||||||||
Gerapy | 2,987 | 8 | 7 days ago | 47 | December 30, 2021 | 58 | mit | Python | ||
Distributed Crawler Management Framework Based on Scrapy, Scrapyd, Django and Vue.js | ||||||||||
Ownphotos | 2,687 | 6 months ago | 90 | mit | Jupyter Notebook | |||||
Self hosted alternative to Google Photos | ||||||||||
Django React Redux Base | 2,619 | 2 years ago | 23 | mit | JavaScript | |||||
Seedstars Labs Base Django React Redux Project | ||||||||||
Shynet | 2,417 | 7 days ago | 41 | apache-2.0 | Python | |||||
Modern, privacy-friendly, and detailed web analytics that works without cookies or JS. |
HelloDjango-blog-tutorial
完全免费、开源的 HelloDjango 系列教程之博客开发。
基于 django 2.2,带你从零开始一步步创建属于自己的博客网站。
特别说明:本项目不仅仅是教程用的演示项目!我们的目标是开发一个功能完善、测试充分、可用于生产环境的开源博客系统。和其他开源博客系统不同点在于,我们以教程的形式详细记录项目从 0 到 1 的开发过程。
master 分支为项目的主分支,每一步关键功能的开发都对应一篇详细的教程,并和历史提交以及标签一一对应。例如第一篇教程对应第一个 commit,对应标签为 step1,依次类推。
可以使用 Virtualenv、Pipenv、Docker 等在本地运行项目,每种方式都只需运行简单的几条命令就可以了。
注意:
因为博客全文搜索功能依赖 Elasticsearch 服务,如果使用 Virtualenv 或者 Pipenv 启动项目而不想搭建 Elasticsearch 服务的话,请先设置环境变量
ENABLE_HAYSTACK_REALTIME_SIGNAL_PROCESSOR=no
以关闭实时索引,否则无法创建博客文章。如果关闭实时索引,全文搜索功能将不可用。Windows 设置环境变量的方式:
set ENABLE_HAYSTACK_REALTIME_SIGNAL_PROCESSOR=no
Linux 或者 macOS:
export ENABLE_HAYSTACK_REALTIME_SIGNAL_PROCESSOR=no
使用 Docker 启动则无需设置,因为会自动启动一个包含 Elasticsearch 服务的 Docker 容器。
无论采用何种方式,先克隆代码到本地:
$ git clone https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial.git
创建虚拟环境并激活虚拟环境,具体方法可参考:开始进入 django 开发之旅:使用虚拟环境
安装项目依赖
$ cd HelloDjango-blog-tutorial
$ pip install -r requirements.txt
迁移数据库
$ python manage.py migrate
创建后台管理员账户
$ python manage.py createsuperuser
具体请参阅 创作后台开启,请开始你的表演。
运行开发服务器
$ python manage.py runserver
浏览器访问 http://127.0.0.1:8000/admin,使用第 4 步创建的管理员账户登录后台发布文章,如何发布文章可参考:创作后台开启,请开始你的表演。
或者执行 fake 脚本批量生成测试数据:
$ python -m scripts.fake
批量脚本会清除全部已有数据,包括第 4 步创建的后台管理员账户。脚本会再默认生成一个管理员账户,用户名和密码都是 admin。
安装 Pipenv(已安装可跳过)
$ pip install pipenv
安装项目依赖
$ cd HelloDjango-blog-tutorial
$ pipenv install --dev
关于如何使用 Pipenv,参阅:开始进入 django 开发之旅 的 Pipenv 创建和管理虚拟环境部分。
迁移数据库
在项目根目录运行如下命令迁移数据库:
$ pipenv run python manage.py migrate
创建后台管理员账户
在项目根目录运行如下命令创建后台管理员账户
$ pipenv run python manage.py createsuperuser
具体请参阅 创作后台开启,请开始你的表演。
运行开发服务器
在项目根目录运行如下命令开启开发服务器:
$ pipenv run python manage.py runserver
浏览器访问 http://127.0.0.1:8000/admin,使用第 4 步创建的管理员账户登录后台发布文章,如何发布文章可参考:创作后台开启,请开始你的表演。
或者执行 fake 脚本批量生成测试数据:
$ pipenv run python -m scripts.fake
批量脚本会清除全部已有数据,包括第 4 步创建的后台管理员账户。脚本会再默认生成一个管理员账户,用户名和密码都是 admin。
安装 Docker 和 Docker Compose
构建和启动容器
$ docker-compose -f local.yml build
$ docker-compose -f local.yml up
创建后台管理员账户
$ docker exec -it hellodjango_blog_tutorial_local python manage.py createsuperuser
其中 hellodjango_blog_tutorial_local 为项目预定义容器名。
浏览器访问 http://127.0.0.1:8000/admin,使用第 3 步创建的管理员账户登录后台发布文章,如何发布文章可参考:创作后台开启,请开始你的表演。
或者执行 fake 脚本批量生成测试数据:
$ docker exec -it hellodjango_blog_tutorial_local python -m scripts.fake
批量脚本会清除全部已有数据,包括第 3 步创建的后台管理员账户。脚本会再默认生成一个管理员账户,用户名和密码都是 admin。
为 fake 脚本生成的博客文章创建索引,这样就可以使用 Elasticsearch 服务搜索文章
$ docker exec -it hellodjango_blog_tutorial_local python manage.py rebuild_index
通过 admin 后台添加的文章会自动创建索引。
线上部署的详细文档请参考下方教程目录索引中的 部署篇 部分,如果不想了解细节或已了解细节,使用 Docker 仅需以下几个简单步骤就可以上线运行:
小贴士:
国内服务器请设置好镜像加速,否则 Docker 构建容器的过程会非常缓慢!具体可参考 部署篇 Docker 部署 django 中线上部署部分的内容。
克隆代码到服务器
$ git clone https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial.git
创建环境变量文件用于存放项目敏感信息
$ cd HelloDjango-blog-tutorial
$ mkdir .envs
$ touch .envs/.production
在 .production 文件写入下面的内容并保存
# django 用于签名和加密等功能的密钥,泄露会严重降低网站的安全性
# 推荐使用这个工具生成:https://miniwebtool.com/django-secret-key-generator/
DJANGO_SECRET_KEY=0p72%[email protected]$bq%%&bxj#_bem+na2t^0(#((fom6eewrg)gyb^
# 设置 django 启动时加载的配置文件
DJANGO_SETTINGS_MODULE=blogproject.settings.production
修改 Nginx 配置:复制 compose/nginx/hellodjango-blog-tutorial.conf-tmpl 到同一目录,并重命名为 hellodjango-blog-tutorial.conf,修改第 6 行的 server_name 为自己的域名(如果没有域名就改为服务器的公网 ip 地址)
启动容器
$ docker-compose -f production.yml up --build -d
执行 docker ps 检查容器启动状况,看到如下的 3 个容器说明启动成功:
配置 HTTPS 证书(没有配置域名无法配置,只能通过服务器 ip 以 HTTP 协议访问)
$ docker exec -it hellodjango_blog_tutorial_nginx certbot --nginx -n --agree-tos --redirect --email [email protected] -d hellodjango-blog-tutorial-demo.zmrenwu.com
解释一下各参数的含义:
浏览器访问域名或者服务器 ip 即可进入博客首页
基础篇
部署篇
进阶篇
测试篇
有了以上的 django 基础,让我继续学习 django REST framework 教程
欢迎关注 HelloGitHub 公众号,获取更多开源项目的资料和内容。
加入 QQ 群和更多的 django 开发者进行交流:
Django学习小组主群:696899473
本作品采用署名-非商业性使用-禁止演绎 4.0 国际 进行许可。