我如何将参数传递给 Django 模板中的模型方法?
How i can to pass parameter to model method in django template?
大家好,我有一个关于 django 模板和模型方法的问题,包括函数参数。
models.py
中的示例代码
class Item(models.Model):
name = models.CharField(max_length=30)
price = models.IntegerField()
owner = models.ForeignKey('User',on_delete=models.CASCADE)
def get_something(self,requestuser): # <-- pass request.user here
// calculate something here
return "output"
在views.py
def assets(request):
return render(request, 'index.html', {'items':Item.objects.filter(owner=request.user)})
在模板中
{% for item in items %}
<h1>{{item.name}}</h1>
<h2>{{item.price}}</h2>
<h2>{{item.get_something(request.user) }}</h2> <!-- How to inject request.user to get_something Here -->
{% endfor %}
您可以为这种情况使用自定义标签。检查 this
.我还必须为我的项目构建它,因为我必须将参数从模板发送到我的模型的方法。
我在我的应用程序中创建了一个名为 templatetags 的文件夹,该文件夹内是我的 __init__.py
和 myTags.py
:
from django import template
register = template.Library()
@register.simple_tag
def call_method(obj, method_name, *args):
method = getattr(obj, method_name)
return method(*args)
然后在模板中首先导入我的标签,然后使用我的自定义标签:
{% load myTags %}
{% call_method model 'method' argument1 argument2 argument3... %}
大家好,我有一个关于 django 模板和模型方法的问题,包括函数参数。
models.py
中的示例代码class Item(models.Model):
name = models.CharField(max_length=30)
price = models.IntegerField()
owner = models.ForeignKey('User',on_delete=models.CASCADE)
def get_something(self,requestuser): # <-- pass request.user here
// calculate something here
return "output"
在views.py
def assets(request):
return render(request, 'index.html', {'items':Item.objects.filter(owner=request.user)})
在模板中
{% for item in items %}
<h1>{{item.name}}</h1>
<h2>{{item.price}}</h2>
<h2>{{item.get_something(request.user) }}</h2> <!-- How to inject request.user to get_something Here -->
{% endfor %}
您可以为这种情况使用自定义标签。检查 this
.我还必须为我的项目构建它,因为我必须将参数从模板发送到我的模型的方法。
我在我的应用程序中创建了一个名为 templatetags 的文件夹,该文件夹内是我的 __init__.py
和 myTags.py
:
from django import template
register = template.Library()
@register.simple_tag
def call_method(obj, method_name, *args):
method = getattr(obj, method_name)
return method(*args)
然后在模板中首先导入我的标签,然后使用我的自定义标签:
{% load myTags %}
{% call_method model 'method' argument1 argument2 argument3... %}