当前位置:  开发笔记 > 编程语言 > 正文

如何在没有Django的其余部分的情况下使用Django模板?

如何解决《如何在没有Django的其余部分的情况下使用Django模板?》经验,为你挑选了4个好方法。

我想在我的(Python)代码中使用Django模板引擎,但我不是在构建基于Django的网站.如何在没有settings.py文件(和其他人)的情况下使用它并且必须设置DJANGO_SETTINGS_MODULE环境变量?

如果我运行以下代码:

>>> import django.template
>>> from django.template import Template, Context
>>> t = Template('My name is {{ my_name }}.')

我明白了:

ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

Daryl Spitze.. 132

解决方案很简单.它实际上有很好的记录,但不容易找到.(我不得不四处寻找 - 当我尝试一些不同的谷歌搜索时,它没有出现.)

以下代码有效:

>>> from django.template import Template, Context
>>> from django.conf import settings
>>> settings.configure()
>>> t = Template('My name is {{ my_name }}.')
>>> c = Context({'my_name': 'Daryl Spitzer'})
>>> t.render(c)
u'My name is Daryl Spitzer.'

有关您可能要定义的一些设置的描述(作为配置的关键字参数),请参阅Django文档(上面链接).



1> Daryl Spitze..:

解决方案很简单.它实际上有很好的记录,但不容易找到.(我不得不四处寻找 - 当我尝试一些不同的谷歌搜索时,它没有出现.)

以下代码有效:

>>> from django.template import Template, Context
>>> from django.conf import settings
>>> settings.configure()
>>> t = Template('My name is {{ my_name }}.')
>>> c = Context({'my_name': 'Daryl Spitzer'})
>>> t.render(c)
u'My name is Daryl Spitzer.'

有关您可能要定义的一些设置的描述(作为配置的关键字参数),请参阅Django文档(上面链接).


并从文件中获取它:settings.configure(TEMPLATE_DIRS =(".",))t = get_template('test.html')
我还需要在Template构造函数之前调用django.setup().

2> nosklo..:

Jinja2 语法与Django几乎完全相同,只有很少的差异,你会得到一个更强大的模板引擎,它也可以将你的模板编译成字节码(快!).

我用它来模板化,包括Django本身,它非常好.如果缺少某些功能,您也可以轻松编写扩展名.

以下是代码生成的一些演示:

>>> import jinja2
>>> print jinja2.Environment().compile('{% for row in data %}{{ row.name | upper }}{% endfor %}', raw=True) 
from __future__ import division
from jinja2.runtime import LoopContext, Context, TemplateReference, Macro, Markup, TemplateRuntimeError, missing, concat, escape, markup_join, unicode_join
name = None

def root(context, environment=environment):
    l_data = context.resolve('data')
    t_1 = environment.filters['upper']
    if 0: yield None
    for l_row in l_data:
        if 0: yield None
        yield unicode(t_1(environment.getattr(l_row, 'name')))

blocks = {}
debug_info = '1=9'


我在我的一个项目中使用Jinja,因为我想要一些我非常熟悉的东西,但不希望我的用户(因为它是一个可分发的应用程序)必须安装Django.一个优点是可以使用easy_install安装Jinja.
Django也可以通过easy_install安装.

3> John Milliki..:

您想使用Django模板的任何特殊原因?无论神社和元史是,在我看来,优越.


如果你真的想,请参阅Django文档settings.py.特别是"使用没有设置的设置DJANGO_SETTINGS_MODULE"部分.使用这样的东西:

from django.conf import settings
settings.configure (FOO='bar') # Your settings go here



4> olt..:

我也推荐jinja2.有一篇很好的关于djangovs.的文章jinja2,提供了一些关于为什么要优先考虑后者的详细信息.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有