当前位置:K88软件开发文章中心网站服务器框架django → 文章内容

Django 部署Django

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-25 14:19:22

由 lxjazni_7 创建,路飞 最后一次修改 2016-02-24 本章包含创建一个django程序最必不可少的步骤 在服务器上部署它如果你一直跟着我们的例子做,你可能正在用runserver 但是runserver 要部署你的django程序,你需要挂接到工业用的服务器 如:Apache 在本章,我们将展示如何做,但是,在做之前我们要给你一个(要做的事的)清单.准备你的代码库很幸运,runserver 但是,在开始前,有一些**关闭Debug模式.我们在第2章,用命令 django-admin.py startproject创建了一个项目 , 其中创建的 settings.py 文件的 DEBUG设置默认为 True . django会根据这个设置来改变他们的行为, 如果 DEBUG 模式被开启. 例如, 如果 DEBUG 被设置成 True , 那么:所有的数据库查询将被保存在内存中, 以 django.db.connection.queries 的形式. 你可以想象,这个吃内存!任何404错误都将呈现django的特殊的404页面(第3章有)而不是普通的404页面。 这个页面包含潜在的敏感信息,但是不会暴露在公共互联网。你的应用中任何未捕获的异常,从基本的python语法错误到数据库错误以及模板语法错误都会返回漂亮的Django错误页面。 这个页面包含了比404错误页面更多的敏感信息,所以这个页面绝对不要公开暴露。简单的说,把DEBUG 设置成True 相当于告诉Django你的网站只会被可信任的开发人员使用。 Internet里充满了不可信赖的事物,当你准备部署你的应用时,首要的事情就是把DEBUG 设置为False 。来关闭模板Debug模式。类似地,你应该在生产环境中把TEMPLATE_DEBUGFalse 如果这个设为True ,为了在那个好看的错误页面上显示足够的东西,Django的模版系统就会为每一个模版保存一些额外的信息。实现一个404模板如果DEBUG 设置为True ,Django会显示那个自带的404错误页面。 但如果DEBUG 被设置成False ,那它的行为就不一样了: 他会显示一个在你的模版根目录中名字叫404.html 的模版 所以,当你准备部署你的应用时,你会需要创建这个模版并在里面放一些有意义的“页面未找到”的信息这里有一个404.html的示例,你可以从它开始。 假定你使用的模板继承并定义一个 base.html,该页面由title和content两块组成。{% extends "base.html" %}{% block title %}Page not found{% endblock %}{% block content %}<h1>Page not found</h1><p>Sorry, but the requested page could not be found.</p>{% endblock %}要测试你的404.html页面是否正常工作,仅仅需要将DEBUG 设置为False ,并且访问一个并不存在的URL。 (它将在sunserver 上工作的和开发服务器上一样好)实现一个500模板类似的,如果DEBUG 设置为False ,Djang不再会显示它自带的应对未处理的Python异常的错误反馈页面。 作为代替,它会查找一个名为500.html 的模板并且显示它。 像404.html 一样,这个模板应该被放置在你的模板根目录下。这里有一个关于500.html的比较棘手的问题。你永远不能确定为什么会显示这个模板,所以它不应该做任何需要连接数据库,或者依赖任何可能被破坏的基础构件的事情。 (例如:它不应该使用自定义模板标签。)如果它用到了模板继承,那么父模板也就不应该依赖可能被破坏的基础构件。 因此,最好的方法就是避免模板继承,并且用一些非常简单的东西。 这是一个500.html 的例子,可以把它作为一个起点:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html lang="en"><head> <title>Page unavailable</title></head><body> <h1>Page unavailable</h1> <p>Sorry, but the requested page is unavailable due to a server hiccup.</p> <p>Our engineers have been notified, so check back later.</p></body></html>设置错误警告当你使用Django制作的网站运行中出现了异常,你会希望去了解以便于修正它。 默认情况下,Django在你的代码引发未处理的异常时,将会发送一封Email至开发者团队。但你需要去做两件事来设置这种行为。首先,改变你的ADMINS设置用来引入你的E-mail地址,以及那些任何需要被注意的联系人的E-mail地址。 这个设置采用了类似于(姓名, Email)元组,像这样:ADMINS = ( ('John Lennon', 'jlennon@example.com'), ('Paul McCartney', 'pmacca@example.com'),)第二,确保你的服务器配置为发送电子邮件。 设置好postfix,sendmail或其他本书范围之外但是与Django设置相关的邮件服务器,你需要将将 EMAIL_HOST设置为你的邮件服务器的正确的主机名. 默认模式下是设置为’localhost’, 这个设置对大多数的共享主机系统环境适用. 取决于你的安排的复杂性,你可能还需要设置 EMAIL_HOST_USER,EMAIL_HOST_PASSWORD,EMAIL_PORT或EMAIL_USE_TLS。你还可以设置EMAIL_SUBJECT_PREFIX以控制Django使用的 error e-mail的前缀。 默认情况下它被设置为'[Django] '设置连接中断警报如果你安装有CommonMiddleware(比如,你的MIDDLEWARE_CLASSES设置包含了’django.middleware.common.CommonMiddleware’的情况下,默认就安装了CommonMiddleware),你就具有了设置这个选项的能力:有人在访问你的Django网站的一个非空的链接而导致一个404错误的发生和连接中断的情况,你将收到一封邮件. 如果你想激活这个特性,设置SEND_BROKEN_LINK_EMAILS 为True(默认为False),并设置你的MANAGERS为某个人或某些人的邮件地址,这些邮件地址将会收到报告连接中断错误的邮件. MANAGERS使用和ADMINS 同样的语法.例如:MANAGERS = ( ('George Harrison', 'gharrison@example.com'), ('Ringo Starr', 'ringo@example.com'),)请注意,错误的Email会令人感到反感,对于任何人来说都是这样。使用针对产品的不同的设置在此书中,我们仅仅处理一个单一的设置文件 settings.py文件由django-admin.py startproject命令生成。但是当你准备要进行配置的时候,你将发现你需要多个配置文件以使你的开发环境和产品环境相独立。 比如,你可能不想每次在本地机器上测试代码改变的时候将DEBUG从False 改为True。Django通过使用多个配置文件而使得这种情况很容易得到避免。如果你想把你的配置文件按照产品设置和开发设置组织起来,你可以通过下面三种方法的其中一种达到这个目的。设置成两个全面的,彼此独立的配置文件设置一个基本的配置文件

[1] [2] [3] [4] [5] [6]  下一页


Django 部署Django