Py学习  »  Django

在Django中正确使用自定义标记时出现问题

Doh09 • 4 年前 • 809 次点击  

摘要

我一直试图让一个自定义标签在Django工作,但似乎它不会正确注册。

索引文件看起来加载正确,只是抱怨标记注册不正确。

我应该做些别的事情来确保标签注册正确吗?


进一步信息

我得到的错误是:

或者装上这个标签?

我称之为标记的视图

{% show_loans %}

我试图在其中注册标记的python文件

不稳定.py

from .models import Loan
from datetime import datetime
from django import template

register = template.Library()

@register.simple_tag('loansTable.html')
def show_loans():
    l1 = Loan()
    l2 = Loan()
    l1.loanedDate_date = datetime.now
    l2.handinDate_date = datetime.now
    l2.loanedDate_date = datetime.now
    l2.handinDate_date = datetime.now
    loans2 =    { l1, l2 }
    return {'loans': loans2}

<ul>
    {% for loan in loans %}
        <li> {{ loan }} </li>
    {% endfor %}
</ul>

文件夹结构:

-app
--templates
---customTemplates
----index.html
----loansTable.html
--loansTable.py

谢谢你的帮助。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52924
 
809 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Daniel Roseman
Reply   •   1 楼
Daniel Roseman    5 年前

这个错误告诉您到底是什么错误:您没有在使用它的模板(即index.html)中加载标记。

{% load loansTable %}
{% show_loans %}

@register.inclusion_tag('loansTable.html')
def show_loans():
    ...
Devang Padhiyar dan-klasson
Reply   •   2 楼
Devang Padhiyar dan-klasson    5 年前

不需要将标记注册到模板。你只需要从那里把它装进去。你已经在做了。

因此,只需替换:

@register.simple_tag('loansTable.html')

有了这个:

@register.simple_tag

您还需要将自定义标记放在 templatetags

在你的 index.html索引 i、 e.如果你在里面登记了标签 custom_tags.py 文件

{% load custom_tags %}

初始 .py文件以确保将目录视为Python包。