# coding: utf-8 """ Django settings for yfwlw_pro project. Generated by 'django-admin startproject' using Django 1.10.6. For more information on this file, see https://docs.djangoproject.com/en/1.10/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/1.10/ref/settings/ """ import os # from datetime import timedelta from django.contrib import admin import socket #获取计算机名称 hostname=socket.gethostname() #获取本机IP ip=socket.gethostbyname(hostname) # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) admin.site.site_header = '云飞物联网后台管理系统' admin.site.site_title = '物联网平台' admin.site.index_title = '河南云飞' # admin.site.index_template = 'admin/index.html' # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'eg7hhy994h^nu-=vm6j#c0^z*m5s@+lvk9kny^p852(#qj@l&i' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = ['127.0.0.1', 'localhost', "*", '120.27.222.26','.yfzhwlw.com','.zgzhwlw.com','iot.hnyfkj.cn', '39.104.94.153', '.yfznscd.com', '192.168.1.13',#手机app开发用端口 '192.168.1.11', '192.168.2.175', ] # ALLOWED_HOSTS = ['127.0.0.1', 'localhost', "*", # '120.27.222.26','.yfzhwlw.com', # '39.104.94.153', '.yfznscd.com', # '192.168.1.13',#手机app开发用端口 # '192.168.1.11', # '192.168.2.175', # ] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', #https启动项目 # 'werkzeug_debugger_runserver', # 'django_extensions', # 'xadmin', # xadmin # 'crispy_forms', # xadmin扩展包 'apps.Home', # 首页app 包含登录、登出、注册、首页、地图等视图 'apps.SystemManage', # 系统管理app,包含用户管理、权限管理、等 'apps.EquipList', # 设备列表 'apps.AppInfoManage', 'apps.EquipAllot', 'apps.EquipManage', 'apps.MsgAlarm', 'apps.ExpertDiag', 'apps.HelpCenter', 'apps.WarnManage', 'apps.SimInfo', 'apps.Webapp', 'apps.Products', 'apps.Pestapp',#病虫测报数据采集系统app 'apps.PestPC',#病虫测报数据采集系统PC 'apps.WeChat',#微信小程序 'gunicorn', # 部署用 'djcelery', # 异步任务 # 'django_celery_beat', # 安装应用 ] # # 定时任务 # CELERYBEAT_SCHEDULE = { # 'add-every-30-seconds':{ # 'task': 'apps.ReportManage.tasks.beat_test', # 任务名 # 'schedule': timedelta(seconds=10), # 每2s执行一次该任务 # # 'args':, # } # } # 扩展用户模型的字段: AUTH_USER_MODEL = 'AppInfoManage.MyUser' # 设置session实现时间: # SESSION_COOKIE_AGE = 60 * 30 # 半小时 30分钟 # 当浏览器关闭时,Django会使cookie失效,超时失效和浏览器关闭失效二者只能选择其一 # session回话失效在浏览器关闭时:当为false时,超时失效起作用; SESSION_EXPIRE_AT_BROWSER_CLOSE = True MIDDLEWARE = [ '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', # 防止页面嵌入 #'django.middleware.http.SetRemoteAddrFromForwardedFor',//获取用户ip均为127.0.0.1时,需要更改该中间件 ] # 获取客户端真实IP: def get_client_ip(request): x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: ip = x_forwarded_for.split(',')[-1].strip() else: ip = request.META.get('REMOTE_ADDR') return ip ROOT_URLCONF = 'yfwlw_pro.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(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', # 每个页面都会有global_setting,全局变量放在此处 # 'apps.Home.views.global_setting', ], }, }, ] WSGI_APPLICATION = 'yfwlw_pro.wsgi.application' # Database # https://docs.djangoproject.com/en/1.10/ref/settings/#databases DATABASES = { 'default': { #'ENGINE': 'django.db.backends.sqlite3', #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'ENGINE': 'django.db.backends.mysql', 'NAME': 'yfwlw', 'USER': 'yfwlw', 'PASSWORD': 'sql_yfkj_6019', 'HOST': '127.0.0.1', 'PORT': '3306', # 'OPTIONS':{ # "init_command": "SET sql_mode='STRICT_TRANS_TABLES'", # } } } # Password validation # https://docs.djangoproject.com/en/1.10/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/1.10/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/1.10/howto/static-files/ STATIC_URL = '/static/' # 将静态文件的路径改为模板所在的路径: # python manage.py collectstatic 命令收集文件位置 STATIC_ROOT = os.path.join(BASE_DIR, "static") STATICFILES_DIRS = ( os.path.join(BASE_DIR, "templates/static"),) STATICFILES_FINDERS = ( "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder" ) # # 全局变量区: # # 当前登录用户: # CURRENTUSER = "" # CELERY SETTING BROKER_URL = 'redis://localhost:6379' #指定消息中间件 CELERY_RESULT_BACKEND = 'redis://localhost:6379' ##指定结果存储位置为本地数据库 CELERY_ACCEPT_CONTENT = ['application/json'] # CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' CELERY_TASK_RESULT_EXPIRES = 6 * 60 # 任务过期时间 CELERY_TIMEZONE = 'Asia/Shanghai' CELERY_IMPORTS = ("apps.ReportManage.tasks") #注册任务, # CELERYD_CONCURRENCY = 20 # # 2. 设置redis作为django的缓存设置 # CACHES = { # "default": { # "BACKEND": "django_redis.cache.RedisCache", # "LOCATION": "redis:127.0.0.1:6379/1", # "OPTIONS": { # "CLIENT_CLASS": "django_redis.client.DefaultClient", # # 忽略密码 # # "PASSWORD": "mysecret" # } # } # } # SESSION_ENGINE = "django.contrib.sessions.backends.cache" # SESSION_CACHE_ALIAS = "default" # import logging # import django.utils.log # import logging.handlers # LOGGING = { # 'version': 1, # 'disable_existing_loggers': True, # 'formatters': { # 'standard': { # 'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'} #日志格式 # }, # 'filters': { # }, # 'handlers': { # 'mail_admins': { # 'level': 'ERROR', # 'class': 'django.utils.log.AdminEmailHandler', # 'include_html': True, # }, # 'default': { # 'level':'DEBUG', # 'class':'logging.handlers.RotatingFileHandler', # 'filename': 'F:\YFWLW\yfwlw\\all.log', #日志输出文件 # 'maxBytes': 1024*1024*5, #文件大小 # 'backupCount': 5, #备份份数 # 'formatter':'standard', #使用哪种formatters日志格式 # }, # 'error': { # 'level':'ERROR', # 'class':'logging.handlers.RotatingFileHandler', # 'filename': 'F:\YFWLW\yfwlw\error.log', # 'maxBytes':1024*1024*5, # 'backupCount': 5, # 'formatter':'standard', # }, # 'console':{ # 'level': 'DEBUG', # 'class': 'logging.StreamHandler', # 'formatter': 'standard' # }, # 'request_handler': { # 'level':'DEBUG', # 'class':'logging.handlers.RotatingFileHandler', # 'filename': 'F:\YFWLW\yfwlw\script.log', # 'maxBytes': 1024*1024*5, # 'backupCount': 5, # 'formatter':'standard', # }, # 'scprits_handler': { # 'level':'DEBUG', # 'class':'logging.handlers.RotatingFileHandler', # 'filename':'F:\YFWLW\yfwlw\script.log', # 'maxBytes': 1024*1024*5, # 'backupCount': 5, # 'formatter':'standard', # } # }, # 'loggers': { # 'django': { # 'handlers': ['default', 'console'], # 'level': 'DEBUG', # 'propagate': False # }, # 'django.request': { # 'handlers': ['request_handler'], # 'level': 'DEBUG', # 'propagate': False, # }, # 'scripts': { # 'handlers': ['scprits_handler'], # 'level': 'INFO', # 'propagate': False # }, # 'sourceDns.webdns.views': { # 'handlers': ['default', 'error'], # 'level': 'DEBUG', # 'propagate': True # }, # 'sourceDns.webdns.util':{ # 'handlers': ['error'], # 'level': 'ERROR', # 'propagate': True # } # } # }