Flask项目总结

Flask项目

  • 这次项目,是用flask框架实现一个可以显示租房信息的网站,提供了买家和卖家的入口,一个身份既可以发布房源,也可以根据入住时间,地区查找租房信息,并下订单,完成租房。
  • 项目源码

接口文档

  • 这次项目完全实现了前后端分离,所以在项目我们写了接口文档,以下是其中的一部分

  • 接口文档参考

"""
#这部分文档,为整个项目的文档提供一个目录功能,一般写在主项目文件夹下。
### 爱家接口文档
#### 用户模块
- [注册接口](docs/user/user_register.md)
- [登录接口](docs/user/user_login.md)
- [登出接口](docs/user/user_logout.md)
"""
"""
# 这部分是具体对某个接口具体描述,以便前端可以了解请求类型,参数,以及各种响应状态
# 文件一般写在docs文件夹下
### 注册接口
#### request请求
    post /user/register/
##### params参数:
    mobile str 电话
    password str 密码
    password2 str 确认密码


#### response响应

##### 失败响应1:
    {
        "code": 900,
        "msg": "参数错误"
    }

##### 失败响应2:
    {
        "code": 1002,
        "msg": "手机号码已注册"
    }

##### 失败响应3:
    {
        "code": 1003,
        "msg": "两次密码不一致"
    }

##### 失败响应4:
    {
        "code": 1001,
        "msg": "手机号码不符合规则"
    }

##### 成功响应:
    {
        "code": 200,
        "msg": "请求成功"
    }
"""
"""
#### 我的房源接口
#### request请求
    get /house/auth_myhouse/

#### response
##### 成功响应
    {
      "code": 200,
      "hlist_list": [
        {
          "address": "\u91d1\u878d\u4e2d\u5fc3",
          "area": "\u91d1\u725b\u533a",
          "create_time": "2018-05-24 18:48:14",
          "id": 9,
          "image": "/static/upload\\jinrongcheng1.jpg",
          "order_count": 0,
          "price": 399,
          "room": 8,
          "title": "\u91d1\u878d\u57ce"
        }
      ]
    }

##### params参数:
    address str 地址
    area str 房屋所在区域
    create_time data 创建时间
    id int 房屋id
    image str 房屋主图片路径
    order_count int 订单数
    price int 单价 单位分
    room int 房屋数
    title str 房屋标题

"""

Status Code

  • 这次项目中自定义了各种状态及其状态码,以便可以反映各种问题, 并根据不同问题做不同的处理
OK = 200
SUCCESS = {
  'code': 200, 'msg': '请求成功'}
DATABASE_ERROR = {
  'code': 401, 'msg': '数据库访问失败'}
PARAMS_ERROR = {
  'code': 900, 'msg': '参数错误'}
# 用户模块
USER_REGISTER_PARAMS_ERROR = {
  'code': 1000, 'msg': '注册信息参数错误'}
USER_REGISTER_MOBILE_ERROR = {
  'code': 1001, 'msg': '手机号码不符合规则'}
USER_REGISTER_MOBILE_IS_EXSITS = {
  'code': 1002, 'msg': '手机号码已存在'}
USER_REGISTER_PASSWORD_IS_ERROR = {
  'code': 1003, 'msg': '两次密码不一致'}

USER_LOGIN_IS_NOT_EXSIST = {
  'code': 1004, 'msg': '用户不存在'}
USER_LOGIN_PASSWORD_IS_ERROR = {
  'code': 1005, 'msg': '密码错误'}

USER_UPLOAD_IMAGE_IS_ERROR = {
  'code': 1006, 'msg': '上传图片格式错误'}
USER_NAME_IS_EXSIT = {
  'code': 1007, 'msg': '用户名已存在'}

USER_AUTH_ID_CARD_IS_ERROR = {
  'code': 1008, 'msg': '身份证格式错误'}

# 房屋模块
MYHOUSE_USER_IS_NOT_AUTH = {
  'code': 2000, 'msg': '用户没有实名认证'}
MYHOUSE_UPLOAD_IMAGE_IS_ERROR = {
  'code': 2001, 'msg': '上传图片格式错误'}
MYHOUSE_UPLOAD_IMAGE_IS_EXIST = {
  'code': 2002, 'msg': '图片已存在'}

# 订单模块
ORDER_START_TIME_GT_END_TIME = {
  'code': 3000, 'msg': '创建订单时间有误'}

Model

  • 为了减少重复代码,这次为数据创建类的时候,用到了很多新的方法。

from datetime import datetime
from werkzeug.security import generate_password_hash, check_password_hash

from utils.functions import db


class BaseModel(object):
    # 定义基础的模型
    create_time = db.Column(db.DATETIME, default=datetime.now())
    update_time = db.Column(db.DATETIME, default=datetime.now(), onupdate=datetime.now())

    # 不用重复写添加和提交
    def add_update(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()


# 多重继承
class User(BaseModel, db.Model):

    __tablename__ = 'ihome_user'
    id = db.Column(db.Integer, primary_key=True)
    phone = db.Column(db.String(11), unique=True)
    pwd_hash = db.Column(db.String(200))
    name = db.Column(db.String(30), unique=True)
    avatar = db.Column(db.String(100))  # 头像
    id_name = db.Column(db.String(30))  # 实名认证的姓名
    id_card = db.Column(db.String(18), unique=True)  # 实名认证的身份证号码

    houses = db.relationship('House', backref='user')
    orders = db.relationship('Order', backref='user')

    # 读
    @property
    def password(self):
        return ''

    # 写
    # 在保存密码时直接加密
    @password.setter
    def password(self, pwd):
        self.pwd_hash = generate_password_hash(pwd)

    # 对比
    def check_pwd(self, pwd):
        return check_password_hash(self.pwd_hash, pwd)

    # 为每个类写了一个转换为Json格式的方法,这样就不用在每次向前端传接口时,在编写额外的代码
    def to_basic_dict<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值