我需要在模板中显示图像。图像是从模型中获取的。我的models.py
驻留在名为services
的应用程序中:
class Car_model(models.Model):
name = models.CharField (max_length = 25, blank=False)
...
category = models.ForeignKey (Category, on_delete=models.CASCADE)
photo = models.ImageField (upload_to ='static/images/models')
我在settings.py
中添加了以下几行:
STATIC_ROOT = os.path.join(BASE_DIR, 'media') # i added it later
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
我还在我的 project_name的 urls.py
文件中添加了这一行:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
我正在尝试通过以下代码在模板中获取图像:
{% load static %}
{% for c in ca %}
<p><strong>{{ c.car_no }}</strong>--<em>{{ c.car_model }}</em>--{{ c.garage }}</p>
<img src="{{ c.car_model.photo.url }}" height="200" />
<form action="{%url 'booking' c.id c.garage.id %}" method="POST">
{% csrf_token %}
<input type="submit" name="the_selected_car" value="Select this car">
</form>
{% endfor %}
但是无论我尝试什么,照片都不会显示。我尝试通过放置:
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
在我的services
应用的urls.py
中,但这没有帮助。
答案 0 :(得分:0)
您没有在URLs.py中包含MEDIA
网址
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
答案 1 :(得分:0)
您忘记在 settings.py 中添加 MEDIA_ROOT 和 MEDIA_URL ,并在 urls.py 中加载媒体URL。
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
和urls.py
urlpatterns = [
........
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
您可以在照片字段中重构您的upload_to
1。。如果要在static
导演中上传图片
photo = models.ImageField (upload_to ='static/images/models')
并如下所示在MEDIA_ROOT中设置静态文件夹
MEDIA_ROOT = os.path.join(BASE_DIR, 'static')
2。。如果要在media
导演中上传图片
由于您要存储上传的图像,因此建议您存储在不同的导演中,例如media, 如下更改您的字段。
photo = models.ImageField (upload_to ='media/images/car_model')
现在,所有与Car_Model相关的图像都将保存在media / images / car_model中 并在MEDIA_ROOT中设置媒体文件夹,如下所示MEDIA_ROOT
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')