在django模板标记

时间:2017-01-03 07:33:10

标签: django django-templates django-template-filters

我尝试访问自定义模板标记功能中的request。但它没有用。

views.py

def candidate(request):
   .......
   .......
   return render(request, template, context)

templatetags

@register.simple_tag(takes_context=True)
def make_url(context, doc_url):
    request = context["request"]
    protocol = "https://" if request.is_secure() else "http://"
    host = request.get_host()
    new_url = "%s%s%s" %(protocol, host, doc_url)
    return new_url

template.html

<iframe src="{{  candidate.resume_file.url | make_url }}" frameborder="0"></iframe>

1 个答案:

答案 0 :(得分:2)

Django过滤器没有被赋予对它们被调用的上下文的任何特殊访问权限,它们只是普通的旧函数。

您需要在函数中传递您想要使用的任何内容。

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

来源:Can custom Django filters access request.user?