配置 Django

Django项目的设置文件位于项目同名目录下,名叫settings.py。这个模块,集合了整个项目方方面面的设置属性,是项目启动和提供服务的根本保证。

一、简述

settings.py文件本质上是一个Python模块,带有模块级别的变量。

下面是一些示例设置:

ALLOWED_HOSTS = [‘www.example.com‘]
DEBUG = False
DEFAULT_FROM_EMAIL = ‘[email protected]‘

注:当DEBUG为False时,必须设置ALLOWED_HOSTS的值。

配置settings.py时:

  • 不允许出现Python层面的语法错误;
  • 可以使用普通的Python语法动态地设置,例如:MY_SETTING = [str(i) for i in range(30)]
  • 可以从其它设置文件导入值。

二、指定配置文件

当你使用Django时,你必须告诉它你要使用哪个配置文件来启动服务。也就是给环境变量DJANGO_SETTINGS_MODULE赋值。这个值要使用Python路径的语法,例如mysite.settings,而不是操作系统的文件路径语法。 注意,被设置的配置文件应该在Python的导入查找路径中。

默认情况下,我们是不需要设置这个变量的,直接启动项目就可以。但是,有时候就会有需要使用别的配置启动项目的情形。

django-admin命令:

当使用django-admin命令时, 可以设置临时环境变量,或者每次运行该工具时显式地指定配置文件。

例如在Unix Bash shell下:

export DJANGO_SETTINGS_MODULE=mysite.settings
django-admin runserver

在Windows shell下,也就是cmd环境:

set DJANGO_SETTINGS_MODULE=mysite.settings
django-admin runserver

使用--settings命令行参数可以手工指定:

django-admin runserver --settings=mysite.settings

如果是在服务器环境中,比如mod_wsgi网关接口,需要告诉WSGI,你准备使用哪个设置文件。这可以使用os.environ实现:

import os

os.environ[‘DJANGO_SETTINGS_MODULE‘] = ‘mysite.settings‘

再次强调,所有上面的操作都要求mysite.settings必须在查找路径中,否则要用绝对路径。

三、默认配置

Django的配置文件并不需要定义所有的选项,每个选项都有一个默认值,这些默认值位于django/conf/global_settings.py模块中。

Django加载配置的顺序是这样的:

  1. global_settings.py中加载默认配置;
  2. 从指定的配置文件中加载(通常是settings.py),如有必要则覆盖global_settings.py中的默认配置。

有一个简单的方法可以查看当前有哪些设置与默认的设置不一样了,也就是python manage.py diffsettings命令。

四、在Django环境中使用settings

所谓的在Django环境中,指的是要使用settings的模块(可以简单的理解为局域网内主机),必须是Django工作状态中能够链接的模块,不能是孤零零,额外的一个Python脚本(外部主机)。这时,可以通过导入django.conf.settings来使用配置文件。 例如:

from django.conf import settings

if settings.DEBUG:
    # Do something

注意,django.conf.settings不是一个模块,而是一个对象。 所以不可以单独导入每个配置项:

from django.conf.settings import DEBUG  # 这是错误的做法

五、不要在运行时更改设置

请不要在Django项目运行时改变设置。 例如,不要在视图中这样做:

from django.conf import settings

settings.DEBUG = True   # 不要这么做

六、注意安全

因为settings.py经常会包含敏感的信息,例如管理员、远程主机、数据库的用户名或密码,你应该尽一切可能来限制对它的访问。 例如,修改它的文件权限使得只有你和Web服务器使用者可以读取它。

七、添加自己的配置项

如果要添加自己的配置项,需遵循以下准则:

  • 配置项名称必须全为大写。
  • 不要使用一个已经存在的设置

八、自定义默认设置

如果你想让默认值来自其它地方而不是django.conf.global_settings,你可以传递一个提供默认设置的模块或类作为default_settings参数(或第一个位置参数)给configure()方法调用。

在下面的示例中,默认的设置来自myapp_defaults,并且单独设置DEBUG为True,而不论它在myapp_defaults中的值是什么:

from django.conf import settings
from myapp import myapp_defaults

settings.configure(default_settings=myapp_defaults, DEBUG=True)

下面的示例和上面一样,只是使用myapp_defaults作为一个位置参数:

settings.configure(myapp_defaults, DEBUG=True)

正常情况下,还是不要用这种方式覆盖默认值。Django的默认配置文件还是很可靠的,你可以安全地使用它们。 注意,如果你使用自己写的默认模块,它将完全取代Django的默认模块,你必须指定每个可能用到的配置项的值。 完整的配置项清单,参考django.conf.settings.global_settings模块。

九、configure()DJANGO_SETTINGS_MODULE二者只能用一

如果你没有设置DJANGO_SETTINGS_MODULE环境变量,你必须使用configure()方法来加载配置。。

如果你没有设置DJANGO_SETTINGS_MODULE,也没有调用configure(),在首次调用配置文件时Django 将引发一个ImportError异常。也就是我们最常见的问题:为啥我启动不了Django?为什么我的脚本不能调用Django的功能?为什么我的代码无法链接到Django内部?

如果你设置了DJANGO_SETTINGS_MODULE,并访问了一下设置,然后又调用configure(),Django 将引发一个RuntimeError异常,表示已经有配置,不要重复配置。

有个属性正好可以用于种情况,防止出现异常:

from django.conf import settings
if not settings.configured:
    settings.configure(myapp_defaults, DEBUG=True)

总结:configure()DJANGO_SETTINGS_MODULE只能用一个,并且只能用一次。不可以两个都用和都不用

十、外部脚本调用Django环境:django.setup()

如果你使用外部脚本, 加载一些Django模板,或者使用ORM来获取一些数据,除了配置settings模块之外,还需要一个步骤。

也就是在设置DJANGO_SETTINGS_MODULE或调用configure()之后,还需要调用django.setup(),像这样:

import django
from django.conf import settings
from myapp import myapp_defaults

settings.configure(default_settings=myapp_defaults, DEBUG=True)
django.setup()

# 现在可以访问Django项目内部的模块了
from myapp import models

请注意,只有真正独立的外部脚本,才需要调用django.setup()。前面有说到过,当处于服务器调用环境,或通过django-admin调用,Django将自动为你加载环境。

django.setup()只能调用一次。尽量使用下面的方式,防止重复调用:

if __name__ == ‘__main__‘:
    import django
    django.setup()

原文地址:https://www.cnblogs.com/zpaixx/p/10211965.html

时间: 2024-11-09 02:08:59

配置 Django的相关文章

Windows10下Apache2.4配置Django

开发环境 Windows 10 x64 Apache 2.4 x64 Python 2.7.11 x64 Django 1.9.6+ 下载和安装mod_wsgi 到 http://download.csdn.net/download/copter/9192361 下载mod_wsgi.so 由于没有Python3.5的mod_wsgi.so,所以就用了Python2.7的. 选择对应的mod_wsgi.so,拷贝到Apache24\modules下. 修改apache2.4的http.conf文

安装配置Django

安装配置Django 以下是基于python3.5 pip install Django 把python环境目录Scripts配置到环境变量,主要在命令行中随时可以使用django-admin 验证 如下证明安装成功: 创建项目 cd workspace\Py\Django django-admin startproject mysite,低版本的python需要django-admin.py startproject mysite 启动

PyCharm配置django环境

PyCharm 作为一个python IDE,用的人非常多,接下来我简要的讲一下 PyCharm配置django环境 (pycharm4.0.5): 创建一个django项目 运行这个django环境,这时PyCharm会报错,提示缺少子命令 配置PyCharm:添加 runserver 到配置中. 即可. 4.再运行PyCharm上的django项目: 则说明配置成功.

Python+Django+SAE系列教程7-----在Sae上配置Django

本章的開始首先我们来注冊一个sae账号,首先登录http://sae.sina.com.cn/.进入登录页面,这里须要一个新浪微博账号进行注冊.假设没有赶快去注冊一个吧. 登录平台后.会提示一个授权信息.点击授权就OK了. 这里须要注意的是,每个手机号码仅仅能注冊一个sae账号.看看这个注冊页就能够知道: 填写完毕以后还须要手机验证一下就能够完毕注冊了. 注冊完毕以后会出现一下界面,立即点击"创建应用": 接下来是选择应用的语言和类型.我们选择python的web应用: 这里面让输入的

centos7 apache httpd安装和配置django项目

一.安装httpd服务 apache在centos7中是Apache HTTP server.如下对httpd的解释就是Apache HTTP Server.所以想安装apache其实是要安装httpd. httpd.x86_64 : Apache HTTP Server 安装: # yum install httpd 设置httpd服务开机启动 [[email protected] httpd]# /sbin/chkconfig httpd on Note: Forwarding reques

django 配置 Django

Django项目的设置文件位于项目同名目录下,名叫settings.py.这个模块,集合了整个项目方方面面的设置属性,是项目启动和提供服务的根本保证. 一.简述 settings.py文件本质上是一个Python模块,带有模块级别的变量. 下面是一些示例设置: ALLOWED_HOSTS = ['www.example.com'] DEBUG = False DEFAULT_FROM_EMAIL = '[email protected]' 注:当DEBUG为False时,必须设置ALLOWED_

centos7下安装配置django,开始第一个项目;

一.安装(注本人使用的centos7下,有python2和python3,涉及到python3的使用pip3,python3) 安装django: pip3 install django==2.1.2 查看版本号:pip3 show django 检查是否安装成功: 方式一.python3下,检查版本: 方式二.查看django-admin信息,会发现提示command no found; find / -name django-admin,查看路径,然后创建软链接: 这样,再次查看django

虚拟CentOS6下配置Django+Apache+mod_wsgi+Sqlite3

0. 安装环境: CentOs版本:   VMWare中CentOs6.4 Python版本:   Python3.4.0 Apache版本:   Httpd2.2.15 Sqlite3版本: Django版本: Django1.8.5 Mod_wsgi版本:    Mod_wsgi 4.4.15   https://pypi.python.org/pypi/mod_wsgi 1. 安装CentOS 注意: 网络适配器选择 网络配置 /etc/sysconfig/network-scripts/

配置django上传文件目录的http访问

1.假设你的html模版文件使用以下路径来访问上传文件内容: url="{{ MEDIA_URL }}{{ images.image }}" 2.设置settings文件: MEDIA_URL = '/media/'MEDIA_ROOT = os.path.'media') 在context_processors中加入: django.core.context_processors.media 使模板引用{{ MEDIA_URL }}生效. 3.配置url文件: from django