基于Flask实现的租房项目
引言:这个原是黑马培训的爱家租房项目,本人仅用于个人学习使用,不作他用。本项目采用前后端分离开发模式,前端使用的技术有Javascript、jQuery、Art-template,后端使用技术有Flask、mysql、redis、celery等。
- 容联云通讯:用于注册短信通知,项目中使用的是测试版,上线使用需购买。项目启动前需要自行去容联云通讯注册账号,然后到SendTemplateSMS文件中用自己的账号id、token、应用id替换下图中标红的部分
- 七牛云:项目启动后,用户上传的图片不是保存在本地,而是保存在七牛云中,所以需要自行注册七牛云账号。然后到image_storage文件中替换成自己的access key、secret key。
- 支付宝:这里使用的是支付宝的沙箱环境,仅用于测试,用户可以随意设置金额,用起来很爽。使用之前,需要先使用openSSL工具生成密钥对,将自己生成的公钥填入支付宝沙箱中的应用公钥。然后将生成的私钥和支付宝的公钥,放到app_private_key与alipay_public_key两个文件中。
本项目中使用mysql作为数据库,使用redis作为缓存。配置都是使用的默认配置,绑定端口不变。其中使用了Flask-Migrate作为mysql数据库迁移扩展,十分方便。
-
create database ihome charset="utf8";
-
在项目目录中,终端执行一下命令(python3),来生成对应数据表
python manage.py db init python manage.py db migrate
-
最后进入ihome数据库,导入城区信息和房屋设施信息
use ihome; INSERT INTO ih_area_info (name) VALUES ('东城区'),('西城区'),('朝阳区'),('海淀区'),('昌平区'),('丰台区'),('房山区'),('通州区'),('顺义区'),('大兴区'),('怀柔区'),('平谷区'),('密云区'),('延庆区'),('石景山区'),('门头沟区'); INSERT INTO ih_facility_info (name) VALUES ('无线网络'),('热水淋浴'),('空调'),('暖气'),('允许吸烟'),('饮水设备'),('牙具'),('香皂'),('拖鞋'),('手纸'),('毛巾'),('沐浴露、洗发露'),('冰箱'),('洗衣机'),('电梯'),('允许做饭'),('允许带宠物'),('允许聚会'),('门禁系统'),('停车位'),('有线网络'),('电视'),('浴缸');
-
开启redis-server服务。配置中我只配置了一项,就是 让redis守护进程启动。
sudo redis-server /usr/local/etc/redis.conf
-
需要到config.py中配置自己的数据库连接信息。
在constants.py中配置了一些参数,这些参数可根据需要自行修改。
短信验证业务使用了celery异步队列,启动前要先开启celery worker。
-
cd到该项目目录下
-
celery -A ihome.tasks.task_sms worker
-
项目测试时:
python manage.py runserver
-
项目部署时,可以使用gunicorn作为wsgi服务程序
gunicorn -w 4 -b 192.168.1.4:8001 manage:app
-
使用Dockerfile前,确保mysql、redis均以开启,并且项目中相应的配置文件均已修改正确。
-
1.首先将Dockerfile文件移动至爱家租房项目的同级目录中。
-
2.制作docker镜像:
docker build -f ihome .
-
3.启动docker
docker run -it --name ihome_contrainer -p 5000:5000 -v xxx/logs/log:/ihome/logs/log ihome
- flask中文文档
- flask-SQLAlchemy
- flask-Migrate
- flask-script现在好多项目都迁移到flask-CLI了,后续本人会研究一下
- gunicorn
- 容联云通讯
- 七牛云
- 支付宝开发者中心