您的位置:首页 > 编程语言 > Python开发

python交互式环境,django模板报错:django.core.exceptions.ImproperlyConfigured

2014-11-14 18:01 585 查看
环境:
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启动Python2.在你的配置文 件.bash_profile中手动添加 DJANGO_SETTINGS_MODULE这个环境变量。

本文出自 “Me & Done” 博客,请务必保留此出处http://medone.blog.51cto.com/9469723/1576601
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: