Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t在django自定义模板筛选器的参数中传递模型的对象_Python_Django_Django Templates_Django Template Filters - Fatal编程技术网

Python Can';t在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

我在django模板中创建了一个自定义过滤器,但django在传递参数数量方面有一些限制,它只允许自定义过滤器函数使用一个或两个参数。我想把两个参数传递给我的自定义过滤器,一个是
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
,您不只是检查user
u
是否有权限吗?对我来说,您的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'