在 Django 中添加个人资料图片不起作用

Adding a profile image in django is not working

我正在尝试将个人资料图片添加到我的页面,但由于某些原因 "my image" 显示的是文字而不是图片。

我不知道我的代码有什么问题,我已经阅读了多个教程,他们都告诉我这样做。我的根目录中有一个文件夹 "media",里面有一个文件夹 "profile_pics".

我已将这些添加到 settings.py

MEDIA_ROOT =  os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

这些到 urls.py

from django.conf import settings
from django.conf.urls.static import static

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这是我的html

{% load static %}
{%block content%}
    <div class="content-section">
        <div class="media">
            <img src="{% static "profile_pics/default.jpg" %}" alt="My image"/>
            <div class="media-body">
                <h2 class="account-heading">{{ user.username }}</h2>
                <p class="text-secondary">{{ user.email }}</p>
            </div>
        </div>

    </div>
{%endblock content%}

models.py

class profiili(models.Model):
   user=models.OneToOneField(User, on_delete=models.CASCADE)
   kuva=models.ImageField(default='default.jpg', upload_to='profile_pics')

{% static %} 标签仅适用于 STATIC_URL。要获取媒体文件,您应该使用 {% get_media_prefix %}

喜欢:

{% load static %}
{% get_media_prefix as MEDIA_PREFIX %}
<img src="{{ MEDIA_PREFIX }}profile_pics/default.jpg" alt="My image"/>

如果你通过User和Profiili模型之间的OnetoOne关系成功上传了你的图片,你可以这样尝试

     div class="content-section">
             <div class="media">
                 <img src="{{user.profiili.kuva.url}}" alt="My i mage"/>
        <div class="media-body">
            <h2 class="account-heading">{{ user.username }} 
            </h2>
            <p class="text-secondary">{{ user.email }}</p>
        </div>
    </div>

</div>

直接使用您的图片 link。 django 开发服务器将只在 debug = True 中提供它。 把这个放在你的图片标签中。

src="/profile_pics/default.jpg" alt="My Image"

{% get_media_prefix as MEDIA %} 将不起作用。 MEDIA 似乎是某种保留词。 {% get_media_prefix as MEDIA_URL %} 或其他一些词都可以。

您还需要在 {% block content %} 块中添加此代码。否则它将不起作用。我的意思是您将无法访问内容块内的 {{ MEDIA_URL }}