2017-06-06 39 views
0

だから、私は、1対1のフィールドを使用してベースDjangoのユーザモデルを拡張していますユーザモデルから:認証後にユーザモデルから拡張された変数の参照に成功

{% if request.user.is_authenticated %} 
    <div class="user"> 
    <div class="user-image"> 
     <img class="img-responsive img-circle" src="{{ MEDIA_URL }}{{ request.user.userprofile.user_avatar.url }}" alt="User Avatar"> 
    </div> 
    <div class="dropdown user-dropdown"> 
    Hello, 
    <a href="#" aria-expanded="true">{{ request.user.first_name }}<i class="fa fa-caret-down" aria-hidden="true"></i></a> 
    <ul class="sub-menu text-left"> 
     <li><a href="#">My Profile</a></li> 
     <li><a href="#">Settings</a></li> 
     <li><a href="#">Log Out</a></li> 
    </ul> 
    </div> 
</div> 
{% else %} 
Do something else 
{% endif %} 

MEDIA_URL

MEDIA_URL = "/site_media/" 
として、settings.pyファイルに定義されているマイ

これは純粋にすべての「ユーザー」アバターが開発目的で保存される場所です。

は、私はいくつかの組み合わせを試してみた

は、いずれも動作するようです:

<img class="img-responsive img-circle" src="{{ MEDIA_URL }}{{ request.user.userprofile.user_avatar.url }}" alt="User Avatar"> 

...この...

<img class="img-responsive img-circle" src="{{ MEDIA_URL }}{{ request.userprofile.user_avatar.url }}" alt="User Avatar"> 

..andこれを...

<img class="img-responsive img-circle" src="{{ MEDIA_URL }}{{ request.user.user_avatar.url }}" alt="User Avatar"> 

認証の成功後に拡張モデルの変数を参照する方法を知っている人なら、私は非常に感謝しています。

答えて

1

変更この行:

user = models.OneToOneField(User, related_name='user') 

へ:

user = models.OneToOneField(User, related_name='userprofile') 

と、この:

src="{{ MEDIA_URL }}{{ request.user.userprofile.user_avatar.url }}" 

が動作するはずです。

request.userを呼び出すと、そのオブジェクトはrelated_nameで設定されたプロパティuserprofileを取得しようとします。 related_nameuserに設定したため、request.userにはuserprofileというプロパティがありませんでした。

+0

うわー - うまくいった!驚くべきことに、この種のものを知っている人もいますが、私自身のCSSスタイルはちょっとしたものです。 XDハハ、ありがとう! –

関連する問題