在django中创建我的第一个自定义模板

时间:2015-10-18 21:43:30

标签: html django templates

我正在使用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'

I the block tag is not recognized

注册块标记缺少什么?

1 个答案:

答案 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/