2017-03-22 9 views
0

私は次のコードを書いていますが、URLはフェッチされており、ローカルホストの管理者の127.0.0.1:8080/adminにありますが、私のウェブサイトにプロフィール画像は表示されません。私はテンプレートにImageFieldイメージを表示するにはどうすればよいですか?

{% extends 'base.html' %} 
{% block main %} 
<div> 
<h1>authentication demo</h1> 
<p> 
    <ul> 
    {% if user and not user.is_anonymous %} 
    <li> 
     <a>Hello {{ user.get_full_name|default:user.username }}!</a> 
    </li> 


    <img src="{{ userprofile.url }}" alt="Some alt text"> 
</p> 
</div> 
{% endblock %} 

次の質問は、何がすべきで書かれているhome.htmlでviews.py

def home(request): 
    context ={'request': request, 'user': request.user} 
    return render(request,'home.html',context) 

でmodels.py

class UserProfile(models.Model): 
    user = models.OneToOneField(User, related_name="profile") 
    name = models.CharField(max_length=250, null=True, blank=True) 
    profile_image = models.ImageField(upload_to = get_upload_file_name, null=True, blank=True) 
    url=models.CharField(max_length=500,null=True,blank=True) 
    def __str__(self): 
     return u'%s profile' % self.user.username 

で 次のように 私のコードです私はhtmlで追加し、どのようにモデルオブジェクトを呼び出すことができます。

+0

?あなたのテンプレートコードは何ですか? – Chris

+0

お返事ありがとうございます。私は現在それを必要としないので、それを使用しませんでした。私はURLを取得し、それは私のデータベースのユーザープロファイルにあります。私はそれをどのようにそのURLを使用してプロフィール画像を表示する必要があります。 –

+0

再度、あなたの_テンプレートコードをお知らせください。 – Chris

答えて

0

まず、あなたがこのようなUserProfileオブジェクトgetする必要があります。その後、あなたのHTMLファイルでこれを行う

# views.py 

from django.shortcuts import get_object_or_404 

def home(request): 
    user_profile = get_object_or_404(UserProfile, user=request.user) 
    context = { 
     'request': request, 
     'user': request.user, 
     'user_profile': user_profile, 
    } 
    return render(request, 'home.html', context) 

を:

{% extends 'base.html' %} 

{% block main %} 
    <div> 
     <h1>authentication demo</h1> 
     <p> 
      <ul> {% if user_profile and not user_profile.user.is_anonymous %} 
       <li><a>Hello {{ user_profile.user.get_full_name|default:user.username }}!</a></li> 
      <img src="{{ user_profile.profile_image.url }}" alt="Some alt text"> 
     </p> 
    </div> 
{% endblock %} 
+0

お返事ありがとうございました。あなたのコードを試しましたが、TypeErrorのようなエラーが表示されています/ 'AnonymousUser'オブジェクトは反復可能ではありません –

+0

Chrisが書いたとおりにHTMLコードを表示する必要があります。 –

+0

はいテンプレートコードをアップロードしました! –

0

あなたは{{ userprofile.url }}を印刷しようとしているが、中に何userprofileオブジェクトがありませんあなたの文脈

プロファイルモデルで使用したprofilerelated_nameを使用してuserオブジェクトからアクセスできます。また、正しいプロファイルフィールド(profile_image、ないurl)を使用してください、とそのフィールドのurl propertyを使用する:

`get_upload_file_name`が定義され、それが何を返すん
<img src="{{ user.profile.profile_image.url }}" alt="Some alt text"> 
関連する問題