2017-01-03 11 views
0

私のカスタムテンプレートタグ機能でrequestにアクセスしようとしました。しかし、それは動作していません。djangoテンプレートタグでの受け渡しリクエスト

@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> 
+2

何をして働いていないのですか?エラーメッセージが表示されますか? – Withnail

+1

カスタムテンプレートタグまたはカスタムフィルタを作成しようとしていますか? –

+0

ご意見ありがとうございます。申し訳ありませんが問題があります。 register.simple_tagにregister.filterを変更しました。私はこの{{candidate.resume_file.url | make_url}}とhtmlの{%make_url candidate.resume_file.url%} – Thameem

答えて

2

Djangoのフィルタは、それらが呼び出されるからコンテキストへの特別なアクセス権を与えられていない

views.py

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

templatetags、それらは単なる古い機能です。

関数内で使用したいものを渡す必要があります。

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

ソース:Can custom Django filters access request.user?

関連する問題