项目配置
状态码
对照表
成功状态码
2000 --- 默认成功返回信息(返回ok字符串)
2001 --- 预约成功的提示信息
2002 --- 预约信息修改成功
失败状态码
4000 --- 活动未开始(报名通道暂未开启....)
4001 --- 请求参数错误(是空值)
4002 --- 请求参数错误(长度错误)
4003 --- 活动开始时间未配置
4004 --- 项目名未配置或未设置为开始
4005 --- 全局参数34%业主的配比值未配置
4100 --- 数据库查询不到业主信息--温馨提示的信息配置
4101 --- 参数正确匹配不到日期
4200 --- 预约已满
4202 --- 预约已满(预约已达到限制人数)
4201 --- 已经预约过
必须要配置的状态码
信息填写错误/非本小区业主信息提示词
4100 ---- 抱歉您填写的信息有误,请重新填写,如有疑问可致电您的社区运营官王绅梦:18088247224
某一时间段预约满提示词
4200 ---- 抱歉时间段预约名额已满,请您预约其它时间
业主见面日成功提示
2001 ---- 尊敬的业主大大,恭喜您活动报名成功
限制人数预约已满员
4202 ---- 抱歉,本次活动预约已满,请您继续关注公众号持续发布的信息,如有疑问可致电您的社区运营官王绅梦:18088247224
业主见面日成功提示
2002 ---- 尊敬的业主大大,恭喜您活动修改成功
34%是预约户数,整页只有34%的人能预约
34的舍 50%入
如何配置后台
1. 配置项目名

2. Excel页脚配置
1. Excel中有几页,配置几个,下图为特殊需求的,需要配置不同的百分比

2. 如果都是全员可以预约,有几页就将左下角的名字全部改为100%业主

3. 报名通道开始时间配置

4. 预约日期和时间段配置

5.上传Excel文件
选择对应的项目名,由于需要在数据库中写入数据,上传文件的时长较长,请勿关闭页面

6. 配置全局参数

7. 紧急停止某时间段预约
1. 预约日期截图
2. 将对应的紧急停止的字段改为0
8. 紧急停止某时间段预约
1. 根据预约日期截图,恢复指定字段的值即可
用户下载Excel账号密码
longhuzichen
longhu123
项目部署
1. 上传项目
1. 创建目录
cd ~/www
mkdir homeowner
2. 将项目打成zip包,然后上传到服务器
3. 解压
unzip Homerowner.zip
rm -rf Homerowner.zip
4. 创建并进入虚拟环境
cd Homeowner/
/usr/local/HomeownerEnv/python/Python-3.11.3/python -m venv HomeownerEnv
source Homeowner/bin/activate
5. 下载模块
pip3.11 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
2. 修改settings
import os
from pathlib import Path
import mimetypes
mimetypes.add_type("image/svg+xml", ".svg", True)
mimetypes.add_type("imsge/svg+xml", ".svgz", True)
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-*o!#8-el#l0*v*g!zsb7$ek130+yudl=rbpxx(byhhf!s#4qdc'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
ALLOWED_HOSTS = ["*"]
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders',
'user',
'golobal_config',
'up_file',
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ALLOW_CREDENTIALS = True
# 如果想要所有请求都可以跨域
CORS_ORIGIN_ALLOW_ALL = True
ALLOWED_HOSTS = [
'*',
]
ROOT_URLCONF = 'Homeowner.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates']
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'Homeowner.wsgi.application'
# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
DATABASES = {
'default': {
"ENGINE": "dj_db_conn_pool.backends.mysql",
"HOST": "10.0.16.15",
"PORT": 33060,
"USER": "root",
"PASSWORD": "123456",
"NAME": "homeowner",
"OPTIONS": {
# 取消外键约束
"init_command": "SET foreign_key_checks = 0;"
},
'POOL_OPTIONS': { # dj_db_conn_pool的参数
'POOL_SIZE': 10,
'MAX_OVERFLOW': 10,
'RECYCLE': 30,
"Time_OUT": 10,
}
}
}
# Password validation
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/4.2/topics/i18n/
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.2/howto/static-files/
#MEDIA_URL = 'media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR,"static")
STATICFILES_DIRS = (os.path.join(BASE_DIR,"images"),)
# Default primary key field type
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
},
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'file': {
'level': 'ERROR',
'class': 'logging.handlers.RotatingFileHandler',
# 日志位置,日志文件名,日志保存目录必须手动创建
'filename': os.path.join(os.path.dirname(os.path.join(BASE_DIR, "Homeowner")), "logs/homeowner.log"),
# 日志文件的最大值,这里我们设置300M
'maxBytes': 300 * 1024 * 1024,
# 日志文件的数量,设置最大日志数量为10
'backupCount': 10,
# 日志格式:详细格式
'formatter': 'verbose',
# 设置编码格式
'encoding': 'utf-8'
},
},
# 日志对象
'loggers': {
'django': {
'handlers': ['console', 'file'],
'propagate': True,
},
}
}
# SECURE_CROSS_ORIGIN_OPENER_POLICY = None django4 可能需要这个配置
2. UWsgi
3. Nginx
python防脱发技巧

浙公网安备 33010602011771号