zoukankan      html  css  js  c++  java
  • Django settings.py配置文件注解(含静态文件和上传文件配置)

    基于Django1.11配置文件settings.py

    import os
    import sys
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    # 这里用到了python中一个神奇的变量"__file__",这个变量可以获取到当前文件的路径(含文件名)
    # 再来一个os.path.dirname()就是获得上一级目录
    # "BASE_DIR"就是工程根目录
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    # 如果包含外部的App或者多个App放在一个目录里,一般需要把这个目录右键Mark成Source Root后,可能还需要将其添加到Python路径中,否则运行manage.py会报错No module named 'xx'.
    # 比如"extraapps"是外部APP上级目录Python包(需Mark成Source Root)
    # 1)sys.path.insert(0, 'path'):定义搜索路径的优先顺序,序号从0开始,表示最大优先级,属于临时搜索路径,程序退出后失效
    # 2)sys.path.append('path'):与insert()类似,只不过这是追加方式
    # 如:sys.path.append(os.path.join(BASE_DIR, 'extraapps'))
    
    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
    
    # 产品密钥。创建Django项目时自动分配的产品密钥,请使用原自动分配的产品密钥替换此行!!
    SECRET_KEY = 'ug4o-53gk-tuxn@@69g_jr8aqq%&e183kr=xw6reg7247&jam='
    
    # 上线时必须将DEBUG设为False
    DEBUG = True
    
    # 指定被访问的主机。若元素为'*',表示所有同一局域网内的网络均可被访问
    ALLOWED_HOSTS = ['localhost', '127.0.0.1']
    
    # App注册。新建的app务必在此注册!
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        # 'polls',                        # 我的APP
        # 'django.contrib.humanize',      # 人类可读性过滤器
        # 'django.contrib.sitemaps',      # 网站地图
    ]
    
    # 自定义的auth APP的User模型,继承抽象模型AbstractUser
    # AUTH_USER_MODEL = 'appname.UserModelName'
    
    # 自定义的用户登录验证后端,继承ModelBackend类,重写authenticate()方法
    # AUTHENTICATION_BACKENDS = ['apps.myuser.views.CustomBackend', ]
    
    # 中间件
    MIDDLEWARE = [
        # 'django.middleware.cache.UpdateCacheMiddleware',           # 缓存更新,必须在第一个!(缓存全站时)
        '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',     # 依赖于会话Session
        'django.middleware.clickjacking.XFrameOptionsMiddleware',   # 防止点击劫持
        # 'django.middleware.cache.FetchFromCacheMiddleware',        # 缓存读取,必须在最后一个!(缓存全站时)
    ]
    
    ROOT_URLCONF = 'mysite.urls'  # URL路由主文件,这里需要据实修改
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 公共模板
            'APP_DIRS': True,   # 多个APP分别建立自己的模板路径,方法同静态文件(见后文)
            '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 = 'mysite.wsgi.application'  # 这里需要据实修改
    
    # 数据库。可配置多个,"default"为必须,但可以为空
    # https://docs.djangoproject.com/en/1.11/ref/settings/#databases
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    
    # 多数据库路由。写入自定义的路由Router类路径,为空则使用"default"数据库
    DATABASE_ROUTERS = []
    
    # 密码验证
    # https://docs.djangoproject.com/en/1.11/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',
        },
    ]
    
    # 国际化
    # https://docs.djangoproject.com/en/1.11/topics/i18n/
    LANGUAGE_CODE = 'en-us'       # 系统语言。中文简体是'zh-hans'(此时USE_I18N必须为True),Admin后台管理系统的页面语言随之改变
    TIME_ZONE = 'Asia/Shanghai'   # 时区
    USE_I18N = True               # 国际翻译
    USE_L10N = True               # 本地化
    USE_TZ = False                # 若使用了本地时间,必须设为False!!(默认值True)
    
    # 邮箱服务配置
    EMAIL_HOST = 'xxx.com.cn'   # 发送者邮箱服务器
    EMAIL_PORT = 25
    EMAIL_HOST_USER = ''        # 发送者用户名(邮箱地址)
    EMAIL_HOST_PASSWORD = ''    # 发送者密码
    EMAIL_USE_SSL = False    # 默认值False
    
    # 静态文件配置 (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.11/howto/static-files/
    # 静态文件的访问目录,自动指向"STATIC_ROOT"或"STATICFILES_DIRS"的目录值。用于程序中,如{% static '静态文件指向目录下的子路径' %}
    # 这里的静态文件URL,即/static/通常用于模板中调用,另外也用于Apache或Nginx配置文件中的静态文件访问配置(生产策略!)
    # 模板调用示例:{% static 'images/123.jpg' %}
    STATIC_URL = '/static/'
    # 这里的静态文件ROOT是生产环境根目录!仅用于生产!当运行"python manage.py collectstatic"的时候,会自动将STATICFILES_DIRS以及各APP中static的所有的文件复制收集到STATIC_ROOT
    # 把这些文件放到一起是为了用Apache、Nginx等上线部署的时候更方便
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    
    # 多个APP的静态文件配置。不能与STATIC_ROOT冲突!先在各个APP下新建static文件夹,然后把JS、CSS、Image等静态文件放在该文件夹下,例如:apps/app1/static/js(css,images)、apps/app2/static/js(css,images)等
    # STATICFILES_DIRS = [os.path.join(BASE_DIR, 'apps', 'app1', 'static'), os.path.join(BASE_DIR, 'apps', 'app2', 'static'), ]
    
    # 媒体文件(用户上传的文件)配置,类似于上面的静态文件配置
    # 不能像静态文件那样调用,而是先在settings中进行模板配置,即在"TEMPLATES"中的"context_processors"里添加'django.template.context_processors.media'
    # (调试策略!手动指定视图访问media文件目录,部署生产请注释掉) 添加URL路由,如:url(r'^media/(?P<path>.*)$', static.serve, {'document_root': settings.MEDIA_ROOT})
    # 模板调用示例:{{ MEDIA_URL }}{{ modelobj.fieldname }}
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    
    # 缓存后端配置(Django支持许多开箱即用的缓存后端)
    # Django默认缓存后端是本地内存(LocMemCache)。虚拟DummyCache用于开发(实际上并不缓存,它只是实现缓存接口而不做任何事情。)
    # Django支持的缓存类型:Memcached(MemcachedCache)、本地内存(LocMemCache)、数据库(DatabaseCache)、文件(FileBasedCache)、虚拟(DummyCache)
    # Memcached缓存数据库下载与安装教程:http://www.runoob.com/memcached/window-install-memcached.html(菜鸟教程提供)
    # 下载安装Memcached本身后,您还需要安装其依赖模块。最常见的两个依赖模块是python-memcached和pylibmc(pip安装)
    # 设置缓存后端后,使用缓存的方式:最简单是缓存整个站点(如下)、缓存每个视图(使用装饰器@cache_page(expire, cache='default'))等
    # 在中间件列表中的[开头]和[末尾]添加如下2个中间件:'django.middleware.cache.UpdateCacheMiddleware'和'django.middleware.cache.FetchFromCacheMiddleware'
    # 测试,进入Python shell:
    # >>> from django.core.cache import cache
    # >>> cache.set('test', 'successful', 60)       第一个参数是key,第二个参数value,第三个参数是过期时间(秒)
    # >>> cache.get('test')               其他方法:set_many(),get_many(),delete(),delete_many(),clear()
    # CACHES = {
    #     'default': {
    #         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',  # 取决于您选择的Memcached绑定
    #         'LOCATION': ['127.0.0.1:11211', ],  # 缓存后端服务器位置,支持分布式,可多个
    #         'TIMEOUT': 5 * 60,  # 缓存超时,默认300s
    #         'OPTIONS': {
    #             'server_max_value_length': 2 * 1024 * 1024,  # 缓存最大值(这里的键值根据缓存类型不同而变化,一般默认也可)
    #         },
    #         'CACHE_MIDDLEWARE_ALIAS': 'DJCACHE',  # 用于存储的缓存别名
    #         'CACHE_MIDDLEWARE_SECONDS': 5 * 60,   # 每个页面应缓存的秒数
    #         'CACHE_MIDDLEWARE_KEY_PREFIX': '',    # 缓存键前缀。如果使用相同的Django在多个站点之间共享缓存,将其设置为站点名称(或其他)以防止发生密钥冲突
    #     }
    # }
    
    # 会话使用的缓存(CACHES),默认"default"
    # SESSION_CACHE_ALIAS = "default"
    # 会话缓存期限,默认2周
    # SESSION_COOKIE_AGE = 1209600
    # 会话生存期设置,浏览器关闭,则会话失效(可能对Chrome浏览器无效)。在登录视图get请求中添加语句"request.session.set_expiry(0)",对Chrome会有效
    SESSION_EXPIRE_AT_BROWSER_CLOSE = True  # 默认False

      至此,转载请注明出处。

    [ 本站相关链接:>>Django部署 ]

  • 相关阅读:
    ASP.NET 表单验证 Part.1(理解表单验证)
    Silverlight 简介 Part.3(设计 Siverlight 页面)
    ASP.NET 成员资格 Part.3(LoginStatus、LoginView、PasswordRecovery)
    ASP.NET 网站部署 Part.1(安装IIS、复制文件部署网站)
    ASP.NET Dynamic Data Part.1(创建动态数据应用程序)
    ASP.NET 安全模型 Part.2(SSL)
    ASP.NET MVC Part.2(扩展基本的 MVC 应用程序)
    ASP.NET 网站部署 Part.2(使用 Web 部署)
    开发高级 Web 部件
    创建 Web 部件(WebPart 类、简单的 Web 部件)
  • 原文地址:https://www.cnblogs.com/wcwnina/p/8540330.html
Copyright © 2011-2022 走看看