• Django的配置文件(settings.py)


    初始项目的配置文件

    新建项目默认settings.py的内容的

    """
    Django settings for ORM project.
    
    Generated by 'django-admin startproject' using Django 1.10.5.
    
    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
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    
    # 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 = '-pasr(osd7j9maaiqp0eibz1_v01&0b5hco+1sr*s1yy#ip)1!'
    
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = True
    
    ALLOWED_HOSTS = []
    
    
    # Application definition
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01',
    ]
    
    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',
    ]
    
    ROOT_URLCONF = 'ORM.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',
                ],
            },
        },
    ]
    
    WSGI_APPLICATION = 'ORM.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'),
        }
    }
    
    
    # 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 = 'en-us'
    
    TIME_ZONE = 'UTC'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.10/howto/static-files/
    
    STATIC_URL = '/static/'
    

      

    注释信息都不解释了

    介绍一些默认常用的配置文件信息

    ALLOWED_HOSTS

    DEBUG = True
    
    ALLOWED_HOSTS = []
    

      

    默认为一个空列表,代表此Django网站可以可以提供的主机/域名的字符串列表。

    当DEUG = True  和  ALLOWED_HOSTS  是空的时候,默认将对本机('localhost')进行验证
    

      

    INSTALLED_APPS

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01',
    ]
    

      

    django.contrib.admin —— 管理站点。

    django.contrib.auth —— 认证系统。

    django.contrib.contenttypes —— 用于内容类型的框架。

    django.contrib.sessions —— 会话框架。

    django.contrib.messages —— 消息框架。

    django.contrib.staticfiles —— 管理静态文件的框架。

    app01  是创建应用app的名字,如果项目创建了app则必须要添加app的名字

    后期详细介绍,现在有些不清楚。。。。。

    静态文件设置

    1.概述:

    静态文件交由Web服务器处理,Django本身不处理静态文件。简单的处理逻辑如下(以nginx为例):URI请求-----> 按照Web服务器里面的配置规则先处理,以nginx为例,主要求配置在nginx.conf里的location

    如果是静态文件,则由nginx直接处理

    如果不是则交由Django处理,Django根据urls.py里面的规则进行匹配

    以上是部署到Web服务器后的处理方式,为了便于开发,Django提供了在开发环境的对静态文件的处理机制,方法是这样:

    1、在INSTALLED_APPS里面加入'django.contrib.staticfiles',
    
    2、在urls.py里面加入
    if settings.DEBUG:  
               urlpatterns += patterns('', url(r'^media/(?P<path>.*)$', 
               'django.views.static.serve', {'document_root': settings.MEDIA_ROOT }),   
                url(r'^static/(?P<path>.*)$',
              'django.views.static.serve',{'document_root':settings.STATIC_ROOT}), ) 
    
    这样就可以在开发阶段直接使用静态文件了。
    

      

    2.MEDIA_ROOT和MEDIA_URL

    静态文件的处理又包括STATIC和MEDIA两类,这往往容易混淆,在Django里面是这样定义的:

    MEDIA:指用户上传的文件,比如在Model里面的FileFIeld,ImageField上传的文件。如果你定义

    MEDIA_ROOT=c: empmedia,那么File=models.FileField(upload_to="abc/")#,上传的文件就会被保存到c: empmediaabc  

    例如:

    class blog(models.Model):  
                       Title=models.charField(max_length=64)  
                       Photo=models.ImageField(upload_to="photo") 
    
    上传的图片就上传到c:	empmediaphoto,而在模板中要显示该文件,则在这样写
    在settings里面设置的MEDIA_ROOT必须是本地路径的绝对路径,一般是这样写:
    BASE_DIR= os.path.abspath(os.path.dirname(__file__))  
    MEDIA_ROOT=os.path.join(BASE_DIR,'media/').replace('\','/') 
    

      

    MEDIA_URL是指从浏览器访问时的地址前缀,举个例子:

    MEDIA_ROOT=c:	empmediaphoto  
    MEDIA_URL="/data/"
    
    在开发阶段,media的处理由django处理:
    访问http://localhost/data/abc/a.png就是访问c:	empmediaphotoabca.png
    
    在部署阶段最大的不同在于你必须让web服务器来处理media文件,因此你必须在web服务器中配置,
    以便能让web服务器能访问media文件
    
    
    以nginx为例,可以在nginx.conf里面这样:
    location ~/media/{
                           root/temp/
                           break;
                        }
    
    具体可以参考如何在nginx部署django的资料。
    

      

    3.STATIC_ROOT和STATIC_URL

    STATIC主要指的是如css,js,images这样文件,在settings里面可以配置STATIC_ROOT和STATIC_URL,

    配置方式与MEDIA_ROOT是一样的,但是要注意

     STATIC文件一般保存在以下位置:

    1、STATIC_ROOT:在settings里面设置,一般用来放一些公共的js,css,images等。
    2、app的static文件夹,在每个app所在文夹均可以建立一个static文件夹,然后当运行collectstatic时,
    python manage.py  collectstatic
     Django会遍历INSTALL_APPS里面所有app的static文件夹,将里面所有的文件复制到STATIC_ROOT。因此,如果你要建立可复用的app,那么你要将该app所需要的静态文件放在static文件夹中。
     也就是说一个项目引用了很多app,那么这个项目所需要的css,images等静态文件是分散在各个app的static文件
    比较典型的是admin应用。当你要发布时,需要将这些分散的static文件收集到一个地方就是STATIC_ROOT。
    
    
    3、STATIC文件还可以配置STATICFILES_DIRS,指定额外的静态文件存储位置。
    STATIC_URL的含义与MEDIA_URL类似。
    

      

     

     引入静态文件的两种方式

    第一种方式:

    在app下面建立一个静态文件夹的目录static,存放静态文件(css,js,image)

    STATIC_URL = '/static/'   #引用名
    
    STATICFILES_DIRS = (
        (os.path.join(BASE_DIR,"app01","static")),  #实际名,实际存放静态目录的文件目录的路径
    )
    
    
    
    在模板文件中引入
    
    <link rel="stylesheet" type="text/css"
              href="/static/test.css">
    
    
    <link rel="stylesheet" type="text/css"
              href="/引用名/要引入的css文件">
    

      

    引用名的作用:

    为了后端的更改不会影响前端的引入,避免造成前端大量修改

    第二种方式:

    STATIC_URL = '/static/'  #引用名
    
    STATICFILES_DIRS=(
                ('hello',os.path.join(BASE_DIR,"app01","static")) , #拼接实际静态存发静态文件的目录
            )
    
    
    在模板文件的内容顶行写
    {% load staticfiles %}
    
    在相应的文件位置引入静态文件
    
    <link rel="stylesheet"  type="text/css" href="{% static "test.css" %}">
    
    href的链接路径都是  {% static "要引用的静态文件" %}
    

      

      

  • 相关阅读:
    Java 之SpringBoot+Vue实现后台管理系统的开发
    保证接口数据安全的10种方式
    连八股文都不懂还指望在前端混下去么
    2020年2月面试题100+大全(合适各级Java人员)
    Java8 Stream源码精讲(一):从一个简单的例子入手
    Java8新特性Lambda表达式
    Java高级面试题及答案
    切片 零值 浅拷贝 泄露 扩容
    @ConfigurationProperties使用及与@Value对比
    JSON中的JSON.parseArray()方法
  • 原文地址:https://www.cnblogs.com/keme/p/6493159.html
Copyright © 2020-2023  润新知