1、Python Web开发基础教程(Django版)第2章 Django配置本章主要内容:Django项目的配置文件在Web服务器中部署项目2.1 Django项目的配置文件Django项目的配置文件为settings.py,在执行django-admin startproject命令创建项目时会自动生成该文件本节主要内容基本配置模板配置数据库配置静态资源配置2.1.1基本配置settings.py文件的主要代码:settings.py文件中主要的配置变量说明如下。1BASE_DIRBASE_DIR变量设置项目在系统中的实际路径。2SECRET_KEYSECRET_KEY变量值是自动生成的一个随
2、机数,用于重要数据的加密处理,如用户密码、CSRF机制、Session会话等数据的加密。在部署项目时,应妥善保管SECRET_KEY,避免泄密。3DEBUG和和ALLOWED_HOSTSDEBUG变量值默认为True,表示项目处于调试模式,即开发阶段。项目完成进行部署时,应将其设置为False。ALLOWED_HOSTS变量为可访问项目Web站点的域名,默认为空。当DEBUG变量值为True,且ALLOWED_HOSTS变量值为空时,只允许用localhost或127.0.0.1访问项目Web站点。在部署项目时,DEBUG变量值为False,此时必须设置ALLOWED_HOSTS,否则项目将无
3、法启动。例如,可设置ALLOWED_HOSTS=*,允许所有域名访问。4INSTALLED_APPSINSTALLED_APPS变量用于注册在项目中使用的应用,默认包含了Django内置的部分应用。django.contrib.admin:用于网站后台数据管理。django.contrib.auth:用于用户认证。django.contrib.contenttype:用于管理项目中的应用和模型信息。django.contrib.sessions:用于会话(Session)控制。django.contrib.messages:用于消息框架。django.contrib.staticfiles:用
4、于静态文件管理 5MIDDLEWARE MIDDLEWARE变量用于注册在项目中使用的中间件。6ROOT_URLCONF ROOT_URLCONF变量设置项目的根URL配置模块,示例代码如下。ROOT_URLCONF=myDjango.urls 表示使用项目中myDjango文件夹下的urls.py文件作为项目的根URL配置模块。7TEMPLATES TEMPLATES变量配置项目使用的模板。本书将在第6章详细讲解模板的相关内容。8WSGI_APPLICATION WSGI_APPLICATION变量设置项目运行在WSGI兼容的Web服务器的接口程序。9DATABASES DATABASES变
5、量设置数据库的相关配置。Django项目默认使用SQLite数据库。项目启动后,Django会在项目根目录中创建一个名为db.sqlite3的数据库。10AUTH_PASSWORD_VALIDATORS AUTH_PASSWORD_VALIDATORS变量设置授权的密码校验器。11LANGUAGE_CODE LANGUAGE_CODE变量设置项目语言。12TIME_ZONE和和USE_TZ TIME_ZONE变量设置项目时区。USE_TZ变量值设置为True时,时区设置才有效。13USE_I18N USE_I18N变量值默认为True,表示支持国际化。如果不需要该功能,应将其设置为False。
6、14USE_L10N USE_L10N变量值默认为True,表示支持格式本地化。2.1.22.1.2模板配置模板配置 在settings.py中,项目默认的模板配置如下。TEMPLATES=BACKEND:django.template.backends.django.DjangoTemplates,DIRS:,APP_DIRS:True,OPTIONS:context_processors:django.template.context_processors.debug,django.template.context_processors.request,django.contrib.aut
7、h.context_processors.auth,django.contrib.messages.context_processors.messages,各个选项含义如下。BACKEND:设置处理模板的模板引擎。DIRS:配置模板的搜索路径。在项目中使用自定义的模板时,需要在此配置模板的搜索路径。例如,DIRS:os.path.join(BASE_DIR,hello/templates)。APP_DIRS:默认值为True,表示Django默认在项目应用的templates路径中搜索模板。OPTIONS:设置可选项。其中的context_processors用于设置模板使用的上下文处理器2.
8、1.32.1.3数据库配置数据库配置 在settings.py中,项目默认的数据库配置如下。DATABASES=default:ENGINE:django.db.backends.sqlite3,NAME:os.path.join(BASE_DIR,db.sqlite3),其中,“default”表示项目使用的默认数据库。“ENGINE”选项定义数据库引擎(也称数据库后端),“django.db.backends.sqlite3”表示使用SQLite3数据库。“NAME”选项指定SQLite3数据库的磁盘文件名。2.1.4静态资源配置 Django将CSS文件、JavaScript脚本和图片等
9、文件视为静态资源。在settings.py中,项目默认的静态资源URL访问路径配置如下。STATIC_URL=/static/其中的“static”作为访问静态资源文件的URL路径,例如,“http:/127.0.0.1:8000/static”。与之对应,应该在Django项目的各个应用中创建一个与STATIC_URL同名的文件夹来存放静态资源文件夹。settings.py的INSTALLED_APPS配置默认包含了“django.contrib.staticfiles”,它将用于管理项目中的静态文件。2.2 在Web服务器中部署项目本节主要内容常用Web服务器WSGI简介在IIS中部署Dj
10、ango项目部署包含静态资源的Django项目2.2.1常用Web服务器1Apache HTTP ServerApache HTTP Server是Apache软件基金会推出的开源Web服务器,它是目前应用最广泛的Web服务器。Apache HTTP Server的特点是简单、速度快、性能稳定、安全可靠,可通过简单的API进行扩展,并且集成了Perl、Python等语言解释器。Apache HTTP Server支持UNIX类和Windows操作系统,以及Novell NetWare和EBCDIC平台。2NginxNginx是一款高性能的HTTP和反向代理服务器,也可作为电子邮件服务器。Ngi
11、nx在高连接并发的情况下,能够支持高达5万个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。Nginx用C语言实现,已经被移植到许多体系结构和操作系统,包括Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。3IISIIS(Internet Information Service,互联网信息服务)是微软推出的一款运行于Windows系统的服务器。它包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面。IIS提供ISAPI作为扩展Web服务器功能的编程接口
12、。2.2.2 WSGI简介WSGI(Python Web Server Gateway Interface)称为Python Web服务器网关接口。WSGI既不是服务器,也不是用于开发的API,它只是定义了一种接口。WSGI规范PEP 333于2003年发布,并于2010年更新为PEP 3333。PEP 333主要支持Python 2.X,PEP 3333主要支持Python 3.X。引用Python提供的WSGI参考服务器(wsgiref.simple_server)模块,可快速实现Web服务器2.2.3在IIS中部署Django项目2.2.4部署包含静态资源的Django项目settings.py中的“STATIC_URL=/static/”设置了静态资源的URL路径。在开发阶段,开发服务器负责管理静态资源,所以使用“localhost/static/”作为静态资源访问路径。项目部署到生成服务器时,则由生产服务器负责管理静态资源,此时需要在settings.py中添加“STATIC_ROOT”设置,用该目录收集项目中的静态资源。2.3 实践:在IIS中配置HelloWorld本节主要内容