2017-12-18 173 views
0

我對圖像和圖像域有疑問。但是,我選擇的默認圖片不顯示,只有一個空白的圓圈。這是我default pictureDjango - 默認個人資料圖片不顯示

Models.py

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    description = models.CharField(max_length=255, default='') 
    city = models.CharField(max_length=100, default='') 
    website = models.URLField(default='') 

    def __str__(self): 
     return self.user.username 

class ProfilePicture(models.Model): 
    user = models.ForeignKey(User) 
    image = models.ImageField(upload_to='profile_image', default='profile_image/Default.jpg') 

Forms.py

class UploadPictureForm(forms.Form): 
    image = forms.ImageField() 

profile.html

<div class="container"> 
    <div id="left"> 
     <div id="profilecard"> 
      {% if user.userprofile.image %} 
       <img class="circular--square" src="{{ }}" width="200" height="200"> 
      {% endif %} 
      <div id="info"> 
       <br> 
       <h3>{{ user.first_name }} {{ user.last_name }}</h3> 
       <p>@{{ user }}</p> 
       <p>{{ user.userprofile.city }}</p> 
       <p>{{ user.userprofile.website }}</p> 
       <p><i>{{ user.userprofile.description }}</i></p> 
      </div> 
     </div> 

回答

0

profile.htmlsrc標籤沒有被提起。如果您想要使用默認圖像,您可以在模板中放置一個else標記,並將src指向一個靜態文件。

<div class="container"> 
    <div id="left"> 
     <div id="profilecard"> 
      {% if user.userprofile.image %} 
       <img class="circular--square" src="{{ user.userprofile.image.url }}" width="200" height="200"> 
      {% endif %} 
      <div id="info"> 
       <br> 
       <h3>{{ user.first_name }} {{ user.last_name }}</h3> 
       <p>@{{ user }}</p> 
       <p>{{ user.userprofile.city }}</p> 
       <p>{{ user.userprofile.website }}</p> 
       <p><i>{{ user.userprofile.description }}</i></p> 
      </div> 
     </div> 
    </div> 
</div> 
0

。在你的代碼錯誤,所以你需要做到這一點,你不能從USERPROFILE模型中獲得的圖像:

更改:

{% if user.userprofile.image %} 

到:

{% if user.profilepicture_set.count > 0 %} 

將img標籤的src屬性更改爲:

src="{{ user.profilepicture_set.all.0.image.url }}" 

固定碼:

<div class="container"> 
    <div id="left"> 
     <div id="profilecard"> 
      {% if user.profilepicture_set.count > 0 %} 
       <img class="circular--square" src="{{ user.profilepicture_set.all.0.image.url }}" width="200" height="200"> 
      {% endif %} 
      <div id="info"> 
       <br> 
       <h3>{{ user.first_name }} {{ user.last_name }}</h3> 
       <p>@{{ user }}</p> 
       <p>{{ user.userprofile.city }}</p> 
       <p>{{ user.userprofile.website }}</p> 
       <p><i>{{ user.userprofile.description }}</i></p> 
      </div> 
     </div> 
    </div> 
</div> 

ForeignKeyProfilePicture類使用related_name將定製的用戶

user = models.ForeignKey(User, related_name='image') 

profilepicture_set鍵,您可以訪問它的模板像

{% if user.image.count > 0 %} 
    <img class="circular--square" src="{{ user.image.all.0.image.url }}" width="200" height="200"> 
{% endif %} 

您也可以使用OneToOneField到ProfilePicture用戶字段如果資料圖片將只有一個:

user = models.OneToOneField(User) 

和模板:

{% if user.profilepicture %} 
    <img class="circular--square" src="{{ user.profilepicture.image.url }}" width="200" height="200"> 
{% endif %} 
+0

你能解釋一下你用你的外鍵related_name是什麼意思? – lordVader

+0

更新了我的答案 –

相關問題