使用 django.template 时出错

Posted

技术标签:

【中文标题】使用 django.template 时出错【英文标题】:Error when using django.template 【发布时间】:2013-08-07 12:43:10 【问题描述】:

我是 django 的初学者,在使用 django 的模板模块时遇到了很多错误。 以下工作来自 python shell:

from django import template
t = template.Template('My name is  name .')

当我使用此代码时,我收到以下错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/django/template/base.py", line 123, in __init__
 if settings.TEMPLATE_DEBUG and origin is None:
File "/usr/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__
self._setup(name)
File "/usr/lib/python2.7/site-packages/django/conf/__init__.py", line 46, 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】:

错误消息指出您需要设置DJANGO_SETTINGS_MODULE 变量。 运行export DJANGO_SETTINGS_MODULE=mysite.settings,为我工作。

【讨论】:

【参考方案2】:

要解决此问题,您需要在 python manage.py shell 而不是仅在 python 中运行它。

原因:嗯,Django 的许多部分都依赖于设置,在它知道要使用哪个设置文件之前,您将无法使用它们。当您在 python manage.py shell 上运行它时,Django 知道要使用哪个设置文件并为您完成这项工作。

【讨论】:

【参考方案3】:

当然@Sudipta 的回答是正确的,但(只是为了将来)为了解释你也可以访问Django book 中的“Creating Template Objects”->“A special Python prompt”部分

【讨论】:

【参考方案4】:

如果你想在没有 django shell 的情况下使用模板系统,你可以这样做:

from django.conf import settings
settings.configure()

然后是你的代码

t = template.Template('My name is  name .')

【讨论】:

感谢您提供这个干净的解决方案。 对于 Django >1.7 还需要:import django django.setup()【参考方案5】:

我也遇到了同样的问题。

主要的一点是,在 django book 2 中,这段代码不应该让用户放入从你的 python.exe 启动的 Python IDLE 中(大概在 Windows 上的 C:\Program Files\Python33 中)。

相反,它只是展示了这段代码的外观。解决方案是简单地运行'cmd'并将目录更改为'mysite',然后运行

python manage.py shell

确保使用“mysite.settings.py”。

【讨论】:

【参考方案6】:

您无法从 python shell 访问和运行 django 项目。 Django 不知道你想从事什么项目。

你必须做以下事情之一:

1. python manage.py shell
2. Set DJANGO_SETTINGS_MODULE environment variable in your OS to mysite.settings
3. Use setup_environ in the python interpreter:
   from django.core.management import setup_environ
   from mysite import settings
   setup_environ(settings)

第一个是最简单也是最好的方法。在 django shell 中运行您的代码。

【讨论】:

感谢您的解决方案。 很抱歉恢复这个,但是我该如何选择#2和#3?

以上是关于使用 django.template 时出错的主要内容,如果未能解决你的问题,请参考以下文章

四. django template模版

使用 jinja2 模板引擎渲染 django 表单

Django出错提示TemplateDoesNotExist at /

安装 coreui laravel vue 管理面板模板时出错

Django template for 循环用法

错误:无法写入字节码。该系统找不到指定的路径。 (os error 3). 编译基板节点模板时出错