无法运行 Django 模板引擎 - Django

Posted

技术标签:

【中文标题】无法运行 Django 模板引擎 - Django【英文标题】:Can't run Django template engine - Django 【发布时间】:2017-10-19 02:40:58 【问题描述】:
from django import template

t = template.Template("My name is  name .")
c = template.Context('name' : 'Yasmika')
print(t.render(t))

我正在学习 Python Django 的基础知识。当我尝试运行 Django 模板时,Python 解释器给了我这个错误。我该如何解决这个问题?

C:\Users\YasmikaSH\AppData\Local\Programs\Python\Python35-32\python.exe C:/Users/YasmikaSH/Desktop/lern_django/lern_django/test2.py
Traceback (most recent call last):
  File "C:/Users/YasmikaSH/Desktop/lern_django/lern_django/test2.py", line 3, in <module>
    t = template.Template("My name is  name .")
  File "C:\Users\YasmikaSH\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\base.py", line 184, in __init__
    engine = Engine.get_default()
  File "C:\Users\YasmikaSH\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\engine.py", line 76, in get_default
    django_engines = [engine for engine in engines.all()
  File "C:\Users\YasmikaSH\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\utils.py", line 89, in all
    return [self[alias] for alias in self]
  File "C:\Users\YasmikaSH\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\utils.py", line 86, in __iter__
    return iter(self.templates)
  File "C:\Users\YasmikaSH\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\utils\functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\YasmikaSH\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\utils.py", line 29, in templates
    self._templates = settings.TEMPLATES
  File "C:\Users\YasmikaSH\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\conf\__init__.py", line 56, in __getattr__
    self._setup(name)
  File "C:\Users\YasmikaSH\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\conf\__init__.py", line 39, in _setup
    % (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting TEMPLATES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

【问题讨论】:

没有。但是我读了也看不懂。 在编写代码时这种心态不是很有用... Django 并不是真的要在 Django 项目之外使用。您可以将其配置为在单个 .py 文件中工作,但这需要一些努力。 可能重复***.com/questions/15556499/… ImproperlyConfigured: You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings的可能重复 【参考方案1】:

我认为你正在尝试

print(t.render(c))

python manage.py shell

In [74]: from django import template

In [75]: t = template.Template("My name is  name .")

In [76]: c = template.Context('name' : 'Yasmika')

In [77]: print(t.render(c))
My name is Yasmika.

【讨论】:

没错,运行t.render(t) 毫无意义。 +1【参考方案2】:

Django 并不是真的要在 Django 项目(或类似项目)之外使用。您可以按照"Writing your first Django app" tutorial 启动一个 Django 项目。完成项目设置后,运行以下命令启动 shell:

$ python manage.py shell

这会加载一个 Python shell,其中 Django 完全配置为使用您的设置。

【讨论】:

【参考方案3】:

您的环境中似乎没有定义 DJANGO_SETTINGS_MODULE 设置。

在这里查看与设置模块相关的文档 -> https://docs.djangoproject.com/en/1.8/topics/settings/

你可以这样设置

export DJANGO_SETTINGS_MODULE=<yoursite>.settings

当你使用 Django 时,你必须告诉它你正在使用哪些设置。通过使用环境变量 DJANGO_SETTINGS_MODULE 来执行此操作。

DJANGO_SETTINGS_MODULE 的值应该是 Python 路径语法,例如mysite.settings。请注意,设置模块应位于 Python 导入搜索路径中。

【讨论】:

以上是关于无法运行 Django 模板引擎 - Django的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django 的模板引擎而不使用 Django 的其余部分

将 django 用作独立模板引擎时如何使用自定义过滤器

Django:在 Django 模板引擎中将 uuid 值转换为字符串

Django模板引擎和外部js文件

使用 django-pygmentify 突出显示 Django 模板引擎中的内部代码块

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