在上一篇中我们基于cookiecutter-django创建了一个one_crm的项目,在本文中将在本地进行初始化,并成功运行起来。
本地初始化之前先确保环境先安装了Python3.8、PostgreSQL,并创建了一个虚拟环境。
1. 安装依赖库
基于cookiecutter-django创建的项目需要安装一些第三方库,本地的依赖列表在requirements/local.txt中,安装命令如下:
$ pip install -r requirements/local.txt
2. 创建数据库
Django默认是Sqlite作为数据库,但Sqlite没有权限管理,不适合多用户应用。本系列教程选择PostgreSQL作为数据库。从性能上比较MySQL和PostgreSQL相差无几。但作为个人来说,Postgresql可能是更好的选择。PostgreSQL有更好的SQL支持和Uicode支持,比如MySQL里需要设置为utf8mb4才能支持emoji,PostgreSQL就没这个坑。另外,还有NoSQL数据库的特性,比如支持Array和Json格式,在某些场景下可以代替MongoDB。
这里的创建数据库是指使用createdb命令手动创建一个数据库,比如:
createdb one_crm -U postgres -W
这个命令会创建一个名为one_crm的数据库,并同-U指定这个数据库的拥有者为postgres账户,-W参数会提示输入一个秘密用于数据库的连接。
当然,喜欢使用GUI操作数据库的同学也可以通过pgAdmin等GUI工具创建数据库。
3. 初始化数据库
这里的Django是从环境变量DATABASE_URL中读取数据库配置的,在Linux或Mac系统中使用export命令,在Windows系统中使用set命令,这里以Mac为例,命令如下:
export DATABASE_URL=postgres://postgres:123456@127.0.0.1:5432/one_crm
设置完成后使用Django命令对数据库进行初始化,命令如下:
$ python manage.py migrate
数据库初始化完成后就可以运行了,运行命令:
$ python manage.py runserver 0.0.0.0:8000
可以看到这个项目中已经实现了一个简单的首页并支持注册和登录功能,右侧是django-debug-toolbar的工具条。其中注册功能需要配置一个邮件发送服务器用来发生注册激活邮件。
4. 配置邮件功能
cookiecutter-django官方推荐mailhog作为本地服务器,使用mailhog作为邮件服务器需要在配置引导是将use_mailhog的选项设置为y(默认是n)。如果没有设置为y,也可手动在config/settings/local.py文件中加入下面两行即可:
EMAIL_HOST = "localhost"
EMAIL_PORT = 1025MailHog是一个电子邮件测试工具,它在本地伪造了一个SMTP服务器。它封装了SMTP协议,只要将其下载并在本地运行即可使用,不需要其他依赖。下载地址
Mailgun启动后可以通过访问http://127.0.0.1:8025/ 查看它的状态。
5. 初始化Git并提交到仓库
完成上面的步骤需要将整个项目代码建立一个代码仓库,用Git进行管理。先使用git init命令进行初始化。然后使用pre-commit install命令初始化代码检测功能。pre-commit的配置在.pre-commit-config.yaml文件中。.pre-commit-config.yaml默认配置了以下功能:check-yaml检查yaml格式的文件是否正确。
black自动格式化,
flake8检测代码不规范的地方,
当flake8找出不符合 pep8规范的代码,并且能够自动格式化,其流程如下:
完成后使用git add .将项目代码加入到版本控制中,最后使用git commit -m "初始化"命令提交到本地仓库中。有兴趣的同学也可以建立一个远程的GitHub项目并将代码同步到Github中。