标签:django python django_settings_module
环境:
ubuntu
django 1.5
virtualenv环境中
(web01)milo@nf:~/.virtualenvs/web01/dj_01/pro01$ python Python 2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from django import template >>> t = template.Template(‘My name is {{ name }}.‘) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/milo/.virtualenvs/web01/local/lib/python2.7/site-packages/django/template/base.py", line 123, in __init__ if settings.TEMPLATE_DEBUG and origin is None: File "/home/milo/.virtualenvs/web01/local/lib/python2.7/site-packages/django/conf/__init__.py", line 52, in __getattr__ self._setup(name) File "/home/milo/.virtualenvs/web01/local/lib/python2.7/site-packages/django/conf/__init__.py", line 45, in _setup % (desc, ENVIRONMENT_VARIABLE)) django.core.exceptions.ImproperlyConfigured: Requested setting TEMPLATE_DEBUG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
原因是缺少环境变量,我们导入环境变量即可。解决方法如下。
方法1:
(web01)milo@nf:~/.virtualenvs/web01/dj_01/pro01$ python Python 2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from django.conf import settings >>> settings.configure() >>> from django import template >>> t = template.Template(‘My name is {{ name }}.‘) >>> 可以正常使用,无报错信息。
方法2:
(web01)milo@nf:~/.virtualenvs/web01/dj_01/pro01$ python manage.py shell # 以此方式进入交互式环境 Python 2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from django import template >>> t = template.Template(‘My name is {{ name }}.‘) >>> 可以正常使用,无报错信息。平时测试django的交互式环境建议以此方式进入交互模式,以免不必要的麻烦。
方法3:
(web01)milo@nf:~/.virtualenvs/web01/dj_01/pro01$ vim ~/.bashrc 增加如下内容: export DJANGO_SETTINGS_MODULE=pro01.settings # 其中pro01是django的项目名称 # 实际就是调用的项目的配置文件settings.py 然后执行: (web01)milo@nf:~/.virtualenvs/web01/dj_01/pro01$ source ~/.bashrc milo@nf:~/.virtualenvs/web01/dj_01/pro01$ workon web01 (web01)milo@nf:~/.virtualenvs/web01/dj_01/pro01$ python Python 2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from django import template >>> t = template.Template(‘My name is {{ name }}.‘) >>>
#################################################################
摘自 The Django Book 2.0
我们先来看一下为什么不引入setting会报错。
启动python有两种方式:python manage.py shell和python。
这两个命令 都会启动交互解释器,但是manage.py shell命令有一个重要的不同: 在启动解释器之前,它告诉Django使用 哪个设置文件。 Django框架的大部分子系统,包括模板系统,都依赖于配置文件;如果Django不知道使用哪 个配置文件,这些系统将不能工作。
如果你想知道,这里将向你解释它背后是如何工作的。 Django搜索DJANGO_SETTINGS_MODULE环境变 量,它被设置在settings.py中。例如,假设mysite在你的Python搜索路径中,那么 DJANGO_SETTINGS_MODULE应该被设置为:’mysite.settings’。
当你运行命令:python manage.py shell,它将自动帮你处理DJANGO_SETTINGS_MODULE。 在当前的这 些示例中,我们鼓励你使用`` python manage.py shell``这个方法,这样可以免去你大费周章地去配置那些你 不熟悉的环境变量。
随着你越来越熟悉Django,你可能会偏向于废弃使用`` manage.py shell`` ,而是在你的配置文 件.bash_profile中手动添加 DJANGO_SETTINGS_MODULE这个环境变量。
所以,另两种解决方案就是:
1.使用 python manage.py shell启动Python
2.在你的配置文 件.bash_profile中手动添加 DJANGO_SETTINGS_MODULE这个环境变量。
本文出自 “Me & Done” 博客,请务必保留此出处http://medone.blog.51cto.com/9469723/1576601
python交互式环境,django模板报错:django.core.exceptions.ImproperlyConfigured
标签:django python django_settings_module
原文地址:http://medone.blog.51cto.com/9469723/1576601