gpt4 book ai didi

django - if..else 自定义模板标签

转载 作者:行者123 更新时间:2023-12-02 06:44:24 24 4
gpt4 key购买 nike

我正在 Django 项目中实现自定义权限应用程序,但我不知道如何实现自定义模板标签,该标签检查登录用户对特定对象实例的权限,并根据以下内容显示一段 HTML检查结果。

我现在拥有的是(伪代码):

{% check_permission request.user "can_edit" on article %}
<form>...</form>
{% endcheck %}

(“check_permission”是我的自定义模板标签)。

模板标签接收用户、权限和对象实例并返回随附的 HTML(表单)。目前这工作正常。

但是我想做的是:

{% if check_permission request.user "can_edit" on article %}
<form>...</form>
{% else %}
{{ article }}
{% endif %}

我读过the assignment tag ,但我担心我会用它污染上下文变量空间(这意味着我可能会覆盖以前的权限上下文变量)。换句话说,由于上下文变量是在不同级别上定义的(在我的例子中是 View 、中间件,现在是这个分配模板标记),我担心可维护性。

最佳答案

您可以在 if 语句中使用模板过滤器。因此,您可以将标记重写为过滤器:

{% if request.user|check_can_edit:article %}

请注意,将多个不同类型的参数传递给过滤器是很棘手的,因此您可能希望每个权限使用一个过滤器,上面我使用了 check_can_edit

关于django - if..else 自定义模板标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7791531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com