Python Can';t在django自定义模板筛选器的参数中传递模型的对象
我在django模板中创建了一个自定义过滤器,但django在传递参数数量方面有一些限制,它只允许自定义过滤器函数使用一个或两个参数。我想把两个参数传递给我的自定义过滤器,一个是Python Can';t在django自定义模板筛选器的参数中传递模型的对象,python,django,django-templates,django-template-filters,Python,Django,Django Templates,Django Template Filters,我在django模板中创建了一个自定义过滤器,但django在传递参数数量方面有一些限制,它只允许自定义过滤器函数使用一个或两个参数。我想把两个参数传递给我的自定义过滤器,一个是string,第二个是model类的object。但我们无法成功地完成这一任务 index.html {% load has_permission_filter %} {% for u in users %} <span class={{ user|has_location_perm:('user.view_us
string
,第二个是model类的object
。但我们无法成功地完成这一任务
index.html
{% load has_permission_filter %}
{% for u in users %}
<span class={{ user|has_location_perm:('user.view_user', u)}}>View</span>
{% endfor %}
因此,我需要一种解决方案,它可以帮助我在django模板的filter函数中传递
对象。您不能对过滤器使用多个参数。但是,您可以使用一个参数。您不能将多个参数与筛选器一起使用。不过你可以这样做。为什么你需要传入用户
,你不是在检查用户u
是否有权限吗?对我来说,你的html看起来有些混乱。user
来自哪里(在您的span标签中)?@cezar我有一个编辑问题,请查看。为什么您需要传入user
,您不只是检查useru
是否有权限吗?对我来说,您的html看起来有些混乱。user
来自哪里(在您的span标记中)?@cezar我有一个编辑问题,请查看。如果参数是模板变量,简单标记函数将传递变量的当前值,而不是变量本身。那么我如何在我的函数中使用变量u
属性呢?简单的标签就可以了。文档中的这句话意味着标签将传递给用户u
,而不是字符串'u'
。简单标记负责从模板上下文中获取'u'
的值。@sander van leeuwen感谢bro,此解决方案确实有效。如果参数是模板变量,则简单标记函数将传递变量的当前值,而不是变量本身。那么我如何在我的函数中使用变量u
属性呢?简单的标签就可以了。文档中的这句话意味着标签将传递给用户u
,而不是字符串'u'
。简单标记负责从模板上下文中获取'u'
的值。@sander van leeuwen谢谢兄弟,这个解决方案真的很有效。
def has_location_perm(user, args):
perm_str, obj = args[0], args[1]
// business logic
if user.has_perm(perm_str) and business_logic_check(perm_str, obj):
return 'allow'
else:
return 'not-allow'