2015-10-18 116 views
0

我正在用Python 2.7构建Django 1.8中的第一个应用程序,我需要将一些值从view.py传递给我的HTML模板。在django中创建我的第一个自定义模板

我使用下面的代码

在Views.py

import datetime 
from django import template 
from django.shortcuts import render_to_response 
from django.template import RequestContext 

register = template.Library() 

class CurrentTimeNode(template.Node): 
    def __init__(self, format_string): 
     self.format_string = str(format_string) 

    def render(self, context): 
     now = datetime.datetime.now() 
     print "Render in CurrentTimeNode:", now 
     return now.strftime(self.format_string) 

@register.simple_tag 
def current_time(format_string): 
    print "Current Time" 
    return CurrentTimeNode(datetime.datetime.now().strftime(format_string)) 

current_time = register.tag(current_time) 


def post(request): 
    datos = "hola" 
    print datos 

    return render_to_response('sitio/post.html', { 'datos':datos} , RequestContext(request)) 

在Post.html

<html> 
    <head> 
     some title 
    </head> 
    <body> 
      {% current_time %} 
      {{ timezone }} 
    </body> 
</html> 

,我想使用标签 “CURRENT_TIME” 来获得时间和转储在我的html文件中。我收到以下消息的错误:

异常类型:TemplateSyntaxError 异常值:
无效的块标签: 'CURRENT_TIME'

I the block tag is not recognized

现在缺少的注册块标记?

回答

1

如果您可以正确格式化您的代码(由于某种原因,我无法编辑您的文章),那将会很好。然而,从你的帖子来看,问题在于你没有加载标签。您应该将current_time函数放在名为“templatetags”的文件夹中(该文件夹应与view.py和models.py文件位于同一级别)。添加

__init__.py 

文件确保该目录被视为Python包。

接下来,在templatetags文件夹中,将current_time函数放在名为current_time.py的文件中。在文档这里

{% load current_time %} 

寻找更多的信息:那么在您的模板,这条线添加到模板的顶部https://docs.djangoproject.com/en/1.8/howto/custom-template-tags/

+0

感谢您的反馈,是完美的,我有很多东西需要学习。如何格式化以及使用这种环境的很多小技巧。到目前为止进展顺利 –

+0

@JorgeZavala伟大的,善良的学习。如果我的回复正确地解决了您的问题,您可以将此问题标记为已回答 – user2719875