2016-06-01 8 views
3

動的である私が知っている私が使用してテンプレートに基づいて、HTML生成されたページに画像を挿入することができ、テンプレート内の画像挿入は:ジャンゴ:パス

<img src="{% static "myapp/my_image.jpg" %}" alt="Image Description"> 

問題は、私はもう少し複雑な何かをしたいです。テンプレート内にuser.first_name属性とuser.last_name属性を持つオブジェクト "user"があるとしましょう。私は(Djangoは式を解析することはできません)エラーを取得し、この行が間違っている

<img src="{% static "myapp/{{user.first_name}}_{{user.last_name}}.jpg" %}" alt="Profile Picture"> 

:私は、そのパスになる画像を挿入したいと思います。助けてもらえますか?

私は写真で組織図を作成していますが、これは、すべてのメンバーのプロファイル写真を含む適切な方法です(画像にはfirstname_lastname.jpgという名前を付ける必要があります)。

おかげ

+0

ビューにパスを作成し、テンプレートに渡してください。 – rnevius

+0

または、Userクラスにメソッドを記述してください。 –

答えて

2

私はあなたのビューでパスを作成して、テンプレートにコンテキストとして渡すお勧めしますが、あなたはまた、add filterを使用することができます。

{% static "myapp/"|add:user.first_name|add:"_"|add:user.last_name|add:".jpg" %} 

またのためのカスタムテンプレートタグを作成することができますこの。たくさんのオプション。

+0

他の答えでは、 'add'は文字列を追加するのには適していないと言っていますが、これは私のためにうまくいきました。 Django 1.10、Python 3.5.1。 – Deleet

0

カスタムフィルタを使用する必要があります(addを使用しないでください。文字列を追加することはできません)。あなたのcustom filteraddstringは別のオプションは、カスタムフィルタを

# In : templatetags/<app>_extras.py 

from django import template 

register = template.Library() 

@register.filter 
def addstring(s1, s2): 
    return str(s1) + str(s2) 

持っていることができ

<img src="{% static 'myapp/'|addstring:user.first_name|addstring:'_'|addstring:user.last_name|addstring:'.jpg' %}" alt="Profile Picture"> 

のIMG SRCであること、すべての魔法&利用ください:

@register.filter 
def imgsrc(user): 
    return 'myapp/{}_{}.jpg'.format(user.first_name, user.last_name) 
1

あなたは別のことを行うことができますが:

<img src ="{% static 'myapp/' %}{{user.first_name}}_{{user.last_name}}.jpg" alt="Profile Picture"> 

これは正常に動作します。これが役に立ちますようお願いいたします:)