我正在使用Python 2.7在Django 1.8中构建我的第一个应用程序,我需要将一些值从view.py传递给我的HTML模板。
我正在使用以下代码
在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>
我希望在我的html文件中使用标签“current_time”获取时间并转储。我收到以下消息错误:
异常类型:TemplateSyntaxError
例外价值:
无效的块标记:'current_time'
注册块标记缺少什么?
答案 0 :(得分:1)
如果您可以正确格式化代码,那就太好了(由于某些原因我无法编辑您的帖子)。不过你的帖子判断,问题是你没有加载标签。您应该将current_time函数放在名为&#34; templatetags&#34;的文件夹中。 (此文件夹应与views.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/