自学Python第二十二天- Django框架(五) 开发和生产环境、自定义404等错误页面、项目发布部署

Django官方文档

开发和生产环境

django 在开发中和生产中使用是有区别的。开发中为了利于调试,一些错误等问题会直接展示,而生产中则不允许。另外开发模式一般使用本机调试,生产环境则会结合 ngnix 、静态资源服务器等进行部署。还有一些零零总总的问题,这里集中一下

开发生产模式切换

在项目配置文件 settings.py 中,DEBUG 就是配置是否只用开发模式,否即使用生产模式。

访问许可

开发模式一般为了方便调试,允许任何访问行为,而生产模式一般只允许特定域名或特定IP访问。

在配置文件 settings.py 中的 ALLOWED_HOSTS 配置允许访问列表。例如

ALLOWED_HOSTS = ['*'] if DEBUG else ['allowed.com.cn']

静态资源访问

开发模式中,django 会在所有允许的目录中查找静态资源,而生产模式则会将所有静态资源整合迁移至指定目录(或静态资源服务器)。

settings.py 中,开发模式设置 STATICFILES_DIRS 列表,django 会在所有 app 目录下的 static 目录和列表中的目录中查找静态资源。生产模式中设置 STATIC_ROOT 指向指定目录,只在此目录中查找静态资源,并且设置静态资源url: STATIC_URL,则可以在 url 中访问静态资源。在生产模式中可以使用 python manage.py collectstatic 命令将所有静态资源迁移到此目录中。

详细的设置可以查看 Django框架(一)中,快速上手下的静态文件。

进程加载

django 在执行时,会创建监控进程,使得代码修改后可以立即重新加载。这在调试模式非常方便,但是生产模式则会造成额外的开销。所以一般生产环境会用 uWSGIWSGI (Web Server Gateway Interface) Web服务器网关接口,是python应用程序或框架和web服务器之间的一种接口,被广泛使用。uWSGI是WSGI的一种,它实现了http协议、WSGI协议以及uwsgi协议。

如何用 uWSGI 托管 Django官方文档

自定义 404 等错误页面

在网站使用中,经常会遇到 400、403、404、500 等错误,也可以在视图中手动抛出这些错误:

# views.py
from django.http import Http404
from django.core.exceptions import PermissionDenied

def test(request):
	raise Http404('手动抛出404')		
	# raise PermissionDenied('手动抛出403')

django 遇到这些错误,在调试模式会给出一些错误信息,在生产模式则会返回一个错误页面。也可以手动定义处理视图来处理这些HTTP错误。

首先定义错误处理视图,可以在处理视图中返回一个模板页面

def handler404(request, exception=None):		# 400、403、500 也是一样,需注意的是 500 没有参数 exception
    return render(request, 'error-404.html')

然后需要在 urls.py 中定义使用的处理函数

# urls.py

handler404 = 'views.handler404'
handler500 = 'views.handler500'
handler403 = 'views.handler403'
handler400 = 'views.handler400'

需注意的是,自定义的处理视图只在生产模式中使用,调试模式并不使用这些自定义的视图来处理错误。

项目发布部署

你可能感兴趣的:(python,django,python,django)