在 django 中添加个人资料图像不起作用



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

我对我的代码中出了什么问题一无所知,我通过多个教程阅读了这些教程,它们都告诉我这样做。我的根目录中有一个文件夹"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)

这是我的网页

{% 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')

如果您已成功通过用户和Profiili模型之间的一对一关系上传图像,则可以尝试这样做

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>

{% 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"/>

使用图像的直接链接。 Django Devlopment Server 将仅在 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 }}

最新更新