2017-12-18 140 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

更新了我的答案 –

相关问题