1.调试
DEBUG = True
2.设置template
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', ], }, }, ]
3.设置mysql数据
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': "zanhu", 'USER': 'root', 'PASSWORD': "root", 'HOST': "192.168.31.39", 'PORT': '3306', # 指定测试库信息 'TEST': { 'NAME': "zanhu_test", # 测试过程中会生成名字为zanhu_test的数据库,测试结束后Django会自动删除该数据库 'CHARSET': 'utf8', # 配置数据库的编码 'COLLATION': 'utf8_general_ci', 'init_command': 'SET default_storage_engine=INNODB', # 数据库引擎 }, 'OPTIONS': { 'init_command': 'SET default_storage_engine=INNODB,character_set_connection=utf8,collation_connection=utf8_unicode_ci;'} } }
4.设置后台中文格式
# LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-Hans' # TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = True
5.设置静态文件
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # 设置静态文件
6.设置图片上传路径
MEDIA_ROOT = os.path.join(BASE_DIR, "static/goods") # 配置图片上传路径
7.添加搜索路径
sys.path.insert(0, BASE_DIR) sys.path.insert(0, os.path.join(BASE_DIR, 'apps')) sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))
8.配置日志
# 日志配置 BASE_LOG_DIR = os.path.join(BASE_DIR, "apps/log") if not os.path.exists(BASE_LOG_DIR): os.mkdir(BASE_LOG_DIR) # 如果不存在这个logs文件夹,就自动创建一个 LOGGING = { 'version': 1, # 保留字 'disable_existing_loggers': False, # 禁用已经存在的logger实例 # 日志文件的格式 'formatters': { # 详细的日志格式 'standard': { 'format': '[%(asctime)s %(filename)s %(levelname)s : %(message)s]' }, # 简单的日志格式 'simple': { 'format': '[%(asctime)s %(filename)s %(levelname)s : %(message)s]' }, # 定义一个特殊的日志格式 'collect': { 'format': '%(message)s' } }, # 过滤器 'filters': { 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', }, }, # 处理器 'handlers': { # 在终端打印 'console': { 'level': 'DEBUG', 'filters': ['require_debug_true'], # 只有在Django debug为True时才在屏幕打印日志 'class': 'logging.StreamHandler', # 'formatter': 'simple' }, # 默认的 'default': { 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,自动切 'filename': os.path.join(BASE_LOG_DIR, "kcdb.log"), # 日志文件 'maxBytes': 1024 * 1024 * 50, # 日志大小 50M 'backupCount': 3, # 最多备份几个 'formatter': 'standard', 'encoding': 'utf-8', }, # 专门用来记错误日志 'error': { 'level': 'ERROR', 'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,自动切 'filename': os.path.join(BASE_LOG_DIR, "kcdb.log"), # 日志文件 'maxBytes': 1024 * 1024 * 50, # 日志大小 50M 'backupCount': 5, 'formatter': 'standard', 'encoding': 'utf-8', }, # 专门定义一个收集特定信息的日志 'collect': { 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,自动切 'filename': os.path.join(BASE_LOG_DIR, "kcdb.log"), 'maxBytes': 1024 * 1024 * 50, # 日志大小 50M 'backupCount': 5, 'formatter': 'collect', 'encoding': "utf-8" } }, 'loggers': { # 默认的logger应用如下配置 '': { 'handlers': ['default', 'console', 'error'], # 上线之后可以把'console'移除 'level': 'DEBUG', 'propagate': True, # 向不向更高级别的logger传递 }, # 名为 'collect'的logger还单独处理 'collect': { 'handlers': ['console', 'collect'], 'level': 'INFO', } }, } 使用: logger = logging.getLogger(__name__) logger.info()
9.rest framework配置
setting.py INSTALLED_APPS = ( ... 'rest_framework', ) REST_FRAMEWORK = { # Use Django's standard `django.contrib.auth` permissions, # or allow read-only access for unauthenticated users. 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' ] } urls.py urlpatterns = [ ... url(r'^api-auth/', include('rest_framework.urls')) ]
10.REST framework JWT
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated', ], 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ], }
11.django python manage.py makemigrations 报错
import pymysql pymysql.install_as_MySQLdb()
12.cache
# https://docs.djangoproject.com/en/1.11/topics/cache/ CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://192.168.1.100:6379/3', 'OPTIONS': { "CLIENT_CLASS": 'django_redis.client.DefaultClient', } }, }
aaa