首页 > 解决方案 > jinja 中从 str 到 int 的类型转换

问题描述

我遇到了一个场景,我需要numeric从数据库中获取数据并在我的模板上运行该数量的循环,例如:

在我的views.py

from django.template.defaulttags import register

@register.filter
def get_range(value):
    return range(value)

def quesSetting(request):
    questionSet_obj = questionSet.objects.filter(id = pk).first()
    quesSetting_dict = {
        'noNumeric' : questionSet_obj.noNumeric,
    }
    return render(request, 'app/quesSetting.html', quesSetting_dict)

我的template

{% for i in noNumeric|get_range %}
  <input type="text" class="form-control" name="numericQuestion" array_column="{{ i }}">
{% endfor %}

现在它说error

'str' object cannot be interpreted as an integer

所以,我尝试像这样进行类型noNumeric转换int

{% for i in int(noNumeric)|get_range %}
  <input type="text" class="form-control" name="numericQuestion" array_column="{{ i }}">
{% endfor %}

这次它给出了以下错误:

Could not parse some characters: int|(noNumeric)||get_range

我该如何解决这个问题?

标签: pythondjangojinja2

解决方案


我刚刚找到了一个解决方案,例如:

@register.filter
def get_range(value):
    value = int(value)
    return range(value)

推荐阅读