我有一个Django 4.2项目.对于额外的模板标记,我创建了这个Simple_tag.

@register.simple_tag(takes_context=True)
def user_help(context):
    # True if HELP is ON for user
    u = context['request'].user

    if u.needs_help:
        return True
    else:
        return False

在HTML模板中,我try 设置为catch that Tag in an IF statement,以便在需要时向用户显示帮助,如下所示:

<p>{% user_help %}</p>
{% if user_help %}
<h2>Some help text</h2>
{% endif %}

尽管p语句在呈现的模板中显示为True,但模板的If condition部分显示为not...?

我到底搞错了什么?

推荐答案

Django模板在变量名和模板标记之间有区别,因此您不能只在if条件下使用模板标记.您需要将其存储在helper变量中:

<p>{% user_help as uh %}{{ uh }}</p>
{% if uh %}
  <h2>Some help text</h2>
{% endif %}

也就是说,我真的不明白您为什么需要一个模板标记,这等同于:

<p>{{ user.needs_help }}</p>
{% if user.needs_help %}
  <h2>Some help text</h2>
{% endif %}

Django相关问答推荐

批量删除多对多条目?

创建用户/将用户登录到客户端服务器的标准OAuth/OIDC流程是什么?

新的 Django 开发人员无法在网站上显示Hello World,而不是默认安装成功页面

Django Rest Framework 速率限制动态基于用户类型

在 python 视图中检测移动浏览器

django 创建多种类型用户的最佳方法

如何从 django 自定义中间件类返回 rest_framework.response 对象?

Django聚合:仅求和返回值?

Django中视图的多个decorator :执行顺序

Django rest-auth allauth 注册,带有邮箱、名字和姓氏,没有用户名

CherryPy 与 Django

has_object_permission 和 has_permission 有什么区别?

Django:从视图中添加 non_field_error?

在 django 中是否有生成 settings.SECRET_KEY 的功能?

Django post_save 在不覆盖模型 save() 的情况下防止递归

在 Django 中测试different layers的最佳实践是什么?

Django 什么是反向关系?

如何在该元素中的所有应用程序之间共享元素范围的模板标签

django 应用基于条件的样式类

暂时禁用 Django 缓存