首页 \ 问答 \ Django自定义包含标签(Django Custom Inclusion Tags)

Django自定义包含标签(Django Custom Inclusion Tags)

我试图建立自己的模板标签。 我不知道为什么我得到这些错误。 我正在关注Django文档。

这是我的应用程序的文件结构:

pollquiz/
    __init__.py
    show_pollquiz.html
    showpollquiz.py

这是showpollquiz.py:

from django import template
from pollquiz.models import PollQuiz, Choice
register = template.Library()

@register.inclusion_tag('show_pollquiz.html')
def show_poll():
    poll = Choice.objects.all()
    return { 'poll' : poll }

html文件:

<ul>
{% for poll in poll 
    <li>{{ poll.pollquiz }}</li>
{% endfor 
</ul>

在我的base.html文件中我包括这样的内容

{% load showpollquiz %}
and
{% poll_quiz %}

然后我得到的错误:

Exception Value: Caught an exception while rendering: show_pollquiz.html

我不知道为什么会发生这种情况。 有任何想法吗? 请记住,我仍然是Django的新人


I'm trying to build my own template tags. I have no idea why I getting these errors. I'm following the Django doc's.

This is my app's file structure:

pollquiz/
    __init__.py
    show_pollquiz.html
    showpollquiz.py

This is showpollquiz.py:

from django import template
from pollquiz.models import PollQuiz, Choice
register = template.Library()

@register.inclusion_tag('show_pollquiz.html')
def show_poll():
    poll = Choice.objects.all()
    return { 'poll' : poll }

html file:

<ul>
{% for poll in poll 
    <li>{{ poll.pollquiz }}</li>
{% endfor 
</ul>

in my base.html file im am including like this

{% load showpollquiz %}
and
{% poll_quiz %}

Bu then I get the the error:

Exception Value: Caught an exception while rendering: show_pollquiz.html

I have no idea why this happens. Any ideas? Please keep in mind I'm still new at Django


原文:https://stackoverflow.com/questions/2370110
更新时间:2020-10-25 12:10

最满意答案

是否所有的自定义过滤器都不在templatetags目录中?

templatetags/
    __init__.py
    showpollquiz.py

然后

@register.inclusion_tag('show_pollquiz.html')

在MY_TEMPLATE_DIR / show_pollquiz.html中查找模板


Shouldn't all custom filters be inside the templatetags directory?

templatetags/
    __init__.py
    showpollquiz.py

then

@register.inclusion_tag('show_pollquiz.html')

looks in MY_TEMPLATE_DIR/show_pollquiz.html for the template

2010-03-03

相关问答

更多

Django:内置包含标签与自定义包含标签(Django: Built-in include tag vs custom inclusion tag)

他们有不同的目的。 include标记仅包含来自现有模板的完整内容并且未经修改。 自定义包含标记将上下文传递给一个函数,该函数可以包含逻辑,以便在将上下文传递给模板之前对其进行处理。 例如,也许我有一个面板将显示在多个页面上。 面板的模板需要通过上下文将一些特定的查询传递给它。 包含该面板的页面不需要其他任何上下文变量。 如果我使用include标签包含面板模板,则必须在包含该面板的每个视图中编写这些查询,并将它们作为上下文变量传递。 或者,我可以编写一个包含查询的自定义包含标记并将它们传递给面板 ...

访问请求在django自定义模板标签(Access request in django custom template tags)

request不是此范围中的变量。 你必须首先从上下文得到它。 将takes_context传递给装饰器,并将context添加到标签参数 。 喜欢这个: @register.inclusion_tag('new/userinfo.html', takes_context=True) def address(context): request = context['request'] address = request.session['address'] return { ...

Django - 自定义标签不起作用(Django - Custom tag not working)

当您使用{% for x in y %} ,这需要y是模板中的上下文变量,而不是模板标记。 包含标记的作用是呈现模板(作为参数传递给包含标签装饰器的模板),并将结果插入到使用包含标记的位置。 您可能希望将get_my_leagues注册为简单标记 (或者如果您使用的是早于1.9的Django,则为赋值标记 ),并使用它如下: {% get_my_leagues as my_leagues %} {% for league in my_leagues %} ... {% endfor %} ...

自定义Django标签和jQuery(Custom Django tag & jQuery)

从文档中可以看出,编写模板标记涉及编写目标函数和渲染器。 所以我假设您当前的代码如下所示: def my_tag(parser, token): # ... some code return MyNode(...) class MyNode(template.Node): def render(self, context): # here is where you write your <script> tags 所以基本上你要做的就是在上下文中挂起一个变量,这样你就可以 ...

Django:通过自定义模板标签用户输入修改数据?(Django: modifying data with user input through custom template tag?)

此类逻辑不属于模板标记。 它属于一个视图,它将响应AJAX请求并返回JSONResponse。 你需要一些javascript来处理基于输入的请求。 This type of logic does not belong in a template tag. It belongs in a view that will respond to AJAX requests and return a JSONResponse. You'll need some javascript to handle m ...

标记未使用inclusion_tag注册(Tag not registering with inclusion_tag)

看起来你在这里缺少装饰符号: register.inclusion_tag("forum.html")应该是@register.inclusion_tag("forum.html") Looks like you're missing decoration notation here: register.inclusion_tag("forum.html") should be @register.inclusion_tag("forum.html")

Django:嵌套的自定义模板标签(Django: nested custom template tags)

他们肯定是允许的,但是这个错误可能会出现,因为您的自定义标记没有正确定义,定位或加载。 确保您的所有自定义标签都位于app/templatetags目录中,并且通常使用@register修饰器进行正确加载。 参考: https : //docs.djangoproject.com/en/dev/howto/custom-template-tags/#registering-custom-filters They are definitely allowed, but that error can ...

Django Inclusion Tag不会发布到数据库(Django Inclusion Tag doesn't post to database)

我使用了包含标记,因为我想在不同的模板中使用相同的表单。 您可以简单地重用表单 - 或者在这种情况下您的表单非常简单,您可以使用基于CreateView泛型类的视图并进一步减少代码。 您的视图将包含以下内容: class OfferForm(CreateView): template_name = 'fragen/askforoffer.html' model = Contact fields = ['gender', 'first_name', 'last_name', ...

Django自定义模板标签和模板加载器(Django custom template tags and template loaders)

不, django.template.loaders.app_directories.load_template_source完全不需要自定义模板标签正常工作。 您不必指定目录来告诉django从哪里加载模板标签库(就像模板一样),只需要coz django假定在INSTALLED_APPS列表中指定的应用程序中找到模板标签库。 它只是遍布INSTALLED_APPS的应用程序列表,从“ templatetags ”目录中导入所有库,并导入每个库以使其可用。 如果找不到名为templatetags ...

Django自定义包含标签(Django Custom Inclusion Tags)

是否所有的自定义过滤器都不在templatetags目录中? templatetags/ __init__.py showpollquiz.py 然后 @register.inclusion_tag('show_pollquiz.html') 在MY_TEMPLATE_DIR / show_pollquiz.html中查找模板 Shouldn't all custom filters be inside the templatetags directory? templatet ...

相关文章

更多

最新问答

更多
  • 如何保护Solr只允许SELECT请求给用户并禁止其他任何东西?(How to secure Solr to allow SELECT request to only users and disallow anything else?)
  • XPath表达式无效/错误TFHpple SWIFT 1.2(XPath Expression not working/incorrect TFHpple SWIFT 1.2)
  • css3 3D变换不能平滑地制作动画(css3 3D transform doesn't animate smoothly)
  • 运行时错误'91'和Outlook.Application = <对象变量或没有设置块变量>?(Run-time error '91' & Outlook.Application = Object variable or With block variable not set?)
  • 慢的webservice问题(Slow webservice problem)
  • textview的不正确对齐方式(Improper alignment of a textview)
  • 在第一步“Hello World”中出现Java错误(Cannot run “Hello World” program in Eclipse)
  • 为什么十六进制地址是14个字符?(why the hex address is 14 character?)
  • 如何在Python中的不同类中使用变量?(How to use variable in different classes in Python?)
  • asp:GridView HYPERLINKFIELD - datanavigateurlformatstring中的asp代码(asp:GridView HYPERLINKFIELD - asp code inside datanavigateurlformatstring)
  • 关于adaboost算法(About adaboost algorithm)
  • 在Matlab上内置图像(Built in Images on Matlab)
  • java swing:输入键事件时焦点丢失(java swing: Focus lost on enter key event)
  • C#中的通用约束,T是相同的TSomethingElse,对吧?(Generic constraints in C#, T is the same TSomethingElse, right?)
  • 从mybatis中的光标获取数据(Fetching data from cursor in mybatis)
  • 在运行时从XML构建对象的最佳方法(Best way for building objects out of XMLs at runtime)
  • 在整个窗口中拉伸sf :: Sprite(Stretch sf::Sprite across entire window)
  • Selenium Node API Web驱动程序等待超时处理程序(Selenium Node API web driver wait timeout handler)
  • 函数使用并且是map的一部分(循环依赖?)(Function uses and is part of map (circular dependency?))
  • 是否可以在C ++ 14中使用可选模板参数创建类型元组?(Is possible to make a tuple of types with optional template parameters in C++14?)
  • PHP从窗帘后面打印/ f(PHP prints /f from behind the curtains)
  • JFrame的contentPane的LayoutManager(LayoutManager of JFrame's contentPane)
  • 用于Instagram Feed的图像滚动(Image Roll Overs for Instagram Feed)
  • 如何显示拉伸字体(双倍宽度/高度)?(How to display stretched font (double width/height)?)
  • 文件操作API在fileapi.h和stdio.h中的WP8差异?(WP8 differences between file manipulation APIs in fileapi.h and stdio.h?)
  • 保存失败后Rails没有回滚事务()(Rails not rolling back transaction after failed save())
  • jqgrid中的分页问题与数组数据(Pagination problem in jqgrid with array data)
  • 重定向时,通过其他页面上的URL调用javascript函数(Call javascript function through url on otherpage while Redirecting)
  • 如何使用InvokeCommandAction调用我的方法并传入参数?(How do I go about using InvokeCommandAction to call a method of mine and pass in parameters?)
  • Jquerymobile按钮仅显示页面的第一个外观(Jquerymobile buttons are shown only first apperance of the page)