django 模板标签缺少 1 个必需的位置参数:值

Posted

技术标签:

【中文标题】django 模板标签缺少 1 个必需的位置参数:值【英文标题】:django template tag missing 1 required positional argument : value 【发布时间】:2018-12-09 06:29:40 【问题描述】:

在我的 django 项目中,我有自定义模板标签来在分页中设置正确的下一个链接:

@register.tag(name='url_replace')
def url_replace(request, field, value):
   print('this is form tag',request,field,value)
   d = request.GET.copy()
   d[field] = value
   return d.urlencode()

在我的模板中:

  % if is_paginated %
        <ul class="pagination pull-right">
          % if page_obj.has_previous %
            <li><a href="?% url_replace request 'page' page_obj.previous_page_number %">&laquo;</a></li>
          % else %
            <li class="disabled"><span>&laquo;</span></li>
          % endif %
          % for i in paginator.page_range %
            % if page_obj.number == i %
              <li class="active"><span> i  <span class="sr-only">(current)</span></span></li>
            % else %
              <li><a href="?% url_replace request 'page' i %"> i </a></li>
            % endif %
          % endfor %
          % if page_obj.has_next %
            <li><a href="?% url_replace request 'page' page_obj.next_page_number %">&raquo;</a></li>
          % else %
            <li class="disabled"><span>&raquo;</span></li>
          % endif %
        </ul>
      % endif %

看起来一切正常,但它显示错误

异常值: url_replace() 缺少 1 个必需的位置参数:'value'

当我传递了所有三个参数时,我无法找出问题所在!

【问题讨论】:

【参考方案1】:

@register.tag 更改为@register.simple_tag。 @register.tag 有点复杂

比较 https://docs.djangoproject.com/en/2.0/howto/custom-template-tags/#django.template.Library.simple_tag 和 https://docs.djangoproject.com/en/2.0/howto/custom-template-tags/#registering-the-tag

【讨论】:

以上是关于django 模板标签缺少 1 个必需的位置参数:值的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:entry() 缺少 1 个必需的位置参数:'title'(Django 帮助)

Django:“缺少1个必需的位置参数:'lookup _name'”,当它没有丢失时?

Django - PUT 端点验证器错误“wrapped_view() 缺少 1 个必需的位置参数:'request'”

Django - get_queryset() 缺少 1 个必需的位置参数:“请求”

文件上传 AngularJS 和 Django:/uploaded_file uploadFile() 处的 TypeError 缺少 1 个必需的位置参数:“请求”

缺少 1 个必需的位置参数:“pk”