Django5入门(速通版) 第二章 配置文件

目录

1.基本配置

2.资源文件配置

        2.1静态资源

        ①静态资源配置=STATIC_URL

        ②静态资源集合配置=STATICFILES_DIRS

        ③静态资源部署配置=STATIC_ROOT

        2.2媒体资源配置=MEDIA

3.模板配置

4.数据库配置

5.中间件

6.其他配置


Django的配置文件settings.py用于配置整个网络的环境和功能,核心配置必须有项目路径,密钥配置,域名访问权限,app列表,中间件,资源文件,模板配置,数据库的连接方式

1.基本配置

#项目路径
# 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/5.1/howto/deployment/checklist/

# 密钥配置
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-3o^y+-xr98$4n0so$+&t8#q#z(yc9!9_scy+1_6wkyd=1)@vpb'

# 调试模式
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

# 域名访问权限
ALLOWED_HOSTS = []


# app列表
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    "app_01.apps.App01Config",
    "Helloworld.apps.HelloworldConfig"
]

        项目路径:无需修改,自动生成。通过模块读取当前项目在计算机系统的具体路径

        密钥配置:无需修改,自动生成。用于加密处理重要数据,如:

                用户密码:Django内置的Auth认证系统,具有用户认证和存储用户信息等功能

                CSRF机制:表格提交相关,防止窃取网站的用户信息

                Session:存放在Cookie中,用于标识当前网站的用户身份,记录用户信息

                DEBUG调试模式:在开发调试阶段,应设置为Ture。在开发调试过程中会自动检测代码是否发生更改,根据检测结果执行是否刷新重启系统。如果项目部署上线,那么应将其改为False,否则会泄漏项目的相关信息。

                域名访问权限:设置可访问的域名,默认值为空列表,项目只允许以localhost或127.0.0.1在浏览器上访问。当DEBUG为False时,ALLOWED_HOSTS为必填项,否则程序无法启动,如果想允许所有域名访问,可设置ALLOWED_HOSTS[*]。

                APP列表:

                                admin:内置的后台管理系统

                                auth:内置的用户认证系统

                                contenttypes:记录项目中所有model元数据(ORM框架)

                                sessions:Session会话,用于标识当前访问网站的用户身份,记录用户信息

                                messages:消息提示功能

                                staticfiles:查找静态资源路径

                项目中添加app时,需要编写设置(我的自动生成),必须要加!

2.资源文件配置

        资源文件配置分为静态资源和媒体资源。

        媒体资源和静态资源是可以同时存在的,而且两者可以独立运行,互不影响。

        2.1静态资源

        指的是网站中不会改变的文件。在一般的应用程序中,静态资源包括CSS文件、JavaScript文件以及图片等资源文件。

        静态资源的配置配置由以下属性进行设置:

        ①静态资源配置=STATIC_URL

        默认配置,app下的static目录为静态资源,可以直接访问,其他目录不行

        分别在项目和应用文件夹下创建static目录,放置图片,应用下再创建image比对

        在项目文件下的setting中可以看到静态资源默认配置

        

        运行查看

        只有应用下的static文件能进行展示

        ②静态资源集合配置=STATICFILES_DIRS

        由于STATIC_URL的特殊性,在开发中会造成诸多不便(将静态文件夹存放在项目的根目录以及定义多个静态文件夹等),通过STATICFILES_DIRS实现多个目录下的静态资源访问

        A,B,C图片均可访问,稍加注意image下的C.png是通过static/C.png访问的

        ③静态资源部署配置=STATIC_ROOT

        作用是在服务器上部署项目,实现服务器和项目之间的映射

# 静态资源部署
STATIC_ROOT = BASE_DIR / ‘static’

        主要收集整个项目的静态资源并存放在一个新的文件夹,然后由该文件夹与服务器之间构建映射关系

        当项目的配置属性 DEBUG 设为True的时候,Django 会自动提供静态文件代理服务,此时整个项目处于开发阶段,因此无须使用STATIC_ROOT。
当配置属性
        DEBUG 设为False的时候,意味着项目进入生产环境,Diang0不再提供静态文件代理服务,此时需要在项目的配置文件中设置STATIC_ ROOT。
        设置STATIC_ROOT需要使用 Django操作指令collectstatic来收集所有静态资源,这些静态资源都会保存在STATIC_ROOT所设置的文件夹里。

        2.2媒体资源配置=MEDIA

        对于一些经常变动的资源,通常将其存放在媒体资源文件夹,如用户头像,歌曲文件等

        媒体资源只有配置属性MEDIA_URL和 MEDIA_ROOT

        MEDIA_URL用于设置媒体资源的路由地址

        MEDIA_ROOT用于获取 media文件夹在计算机系统的完整路径信息

        在项目文件夹下的urls.py文件中为媒体文件添加相应的路由地址

        运行可查看是否添加成功

3.模板配置

        一种较为特殊的HTML文档,嵌入了能够让Django识别的变量和指令

        模板引擎会解析变量和指令,生产完整的HTML网页并返回给用户浏览     

        模板是Django的MTV框架中的T部分,配置模板路径可让Django解析时找到模板所在位置

   

  • BACKEND:定义模板引擎,用于识别模板里面的变量和指令。内置的模板引擎有 DjangoTemplates 和 jinja2.Jinja2,每个模板引擎都有自己的变量和指令语法。

  • DIRS:设置模板所在路径,告诉Django在哪个地方查找模板的位置,默认为空列表。

  • APP_DIRS:是否在App里查找模板文件。

  • OPTIONS:用于填充在RequestContext 的上下文(模板里面的变量和指令),一般情况下不做任何修改。

        Django会生成默认模板文件,也可以自己配置

        在app下新建模板文件,并编写HTML文件

        在app下的views.py中修改定向的html页面

        并在项目中的setting.py中添加路径

        启动查看是否添加成功

        如果定向时,两个模板下的html文件命名相同,则根据DIRS中路径的先后顺序判断生成位置在前的模板中的html文件

4.数据库配置

        选择项目所使用的数据库类型,数据库引擎用于实现与数据库的连接

        4种数据库引擎:

        'django.db.backends.postgresql'   'django.db.backends.mysql'

        'django.db.backends.sqlite3'   'django.db.backends.oracle'

        项目默认使用sqlite3数据库

        可以修改为MySQL数据库

        安装MySQL连接模块mysqlclient  

        安装完成后,修改数据库连接信息

        NAME:数据库名字  USER:用户名称  PASSWORD:密码  HOST:地址(默认本地) 

        PORT:端口号(默认3306,可后期修改)

        通过migrate命令来创建Django内置功能的数据表来查看是否连接成功

        这些为Django内置自带的Admin后台管理系统,Auth用户系统以及绘画机制等功能需要用到的表

        同时也可以支持多数据库

        若项目中连接了多个数据库,则数据库之间的使用需要遵从一定的规则和设置。比如项目中定义了多个模型,每个模型所对应的数据表可以选择在某个数据库中生成,如果模型没有指向某个数据库,模型就会在key为default的数据库里生成。

5.中间件

        用来处理Django的请求(Request)和响应(Response)的框架级别的钩子,是一个轻量级,低级别的插件系统,用于在全局范围内改变Django的输入和输出

        当用户在网站中进行某个操作时,这个过程是用户向网站发送HTTP请求(Request);而网站会根据用户的操作返回相关的网页内容,这个过程称为响应处理(Response)

        默认的中间件(Middleware)配置如下:

  • SecurityMiddleware:内置的安全机制,保护用户与网站的通信安全。

  • SessionMiddleware:会话Session功能。

  • LocaleMiddleware:国际化和本地化功能。

  • CommonMiddleware:处理请求信息,规范化请求内容。

  • CsrfViewMiddleware:开启CSRF防护功能。

  • AuthenticationMiddleware:开启内置的用户认证系统。

  • MessageMiddleware:开启内置的信息提示功能。

  • XFrameOptionsMiddleware:防止恶意程序单击劫持。

        可以自定义中间件

        可以定义五个方法,分别是:

        process_request(self,request) 请求views方法之前会执行。

        process_view(self, request, callback, callback_args, callback_kwargs) Django会在调用视图函数之前调用process_view方法。

        process_template_response(self,request,response) 该方法对视图函数返回值有要求,必须是一个含有render方法类的对象,才会执行此方法

        process_exception(self, request, exception) 这个方法只有在视图函数中出现异常了才执行         process_response(self, request, response) 请求执行完成,返回页面前会执行

        主要的是process_request和process_response

        在自己定义中间件时,必须继承MiddlewareMixin

        

        在app中新建中间件文件夹,创建类并继承MiddlewareMixin,实现process_request和process_response方法

        在项目settings下的MIDDLEWARE中添加刚创建的类

        

        可在views中添加print来查看运行情况

        运行页面,可在控制台中看到输出语句

6.其他配置

ROOT_URLCONF = 'djangoWeb.urls'

        指定了当前项目的根 URL,是 Django 路由系统的入口

WSGI_APPLICATION = 'djangoWeb.wsgi.application'

        项目部署时,Django 的内置服务器将使用的 WSGI 应用程序对象的完整 Python 路径

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',
    },
]

        一个支持插拔的密码验证器,且可以一次性配置多个,Django 通过这些内置组件来避免用户设置的密码等级不足的问题

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'

        分别代表语言配置项和当前服务端时区的配置项,我们常用的配置如下所示:

                LANGUAGE_CODE 取值是英文:'en-us'或者中文:'zh-Hans';

                TIME_ZONE 取值是世界时区 'UTC' 或中国时区 'Asia/Shanghai'

USE_I18N = True

        项目开发完成后,可以选择向不同国家的用户提供服务,那么就需要支持国际化和本地化

USE_TZ = True

        指对时区的处理方式,当设置为 True 的时候,存储到数据库的时间是世界时间 'UTC'

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

        默认主键自增类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值