Skip to main content
 首页 » 编程设计

python之如何在 Django 中显示来自模型的图像

2024年08月15日34shanyou

需要说明的是,我已经尝试自己研究这个问题,但由于我对 Django 还是很陌生,所以我无法理解这里的解决方案。我也阅读了文档,但我不明白我做错了什么。我无法让位于“ad_pictures”目录中的图像显示在 HTML 中。

这是我的代码:

设置.py

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

urls.py(项目)

from django.conf.urls import url, include 
from django.contrib import admin 
from django.conf import settings 
from django.conf.urls.static import static 
 
urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^accounts/', include('accounts.urls')), 
    url(r'^classifieds/', include('classifieds.urls')), 
 
 ] +static(settings.MEDIA_URL, document_ROOT=settings.MEDIA_ROOT) 

urls.py(分类应用)

from django.conf.urls import url 
from . import views 
 
app_name = 'classifieds' 
 
urlpatterns = [ 
    url(r'^create/', views.create, name='create'), 
    url(r'^latestads/', views.latestads, name='latestads'), 
] 

模型.py

class Post(models.Model): 
 
    title = models.CharField(max_length=150) 
    price = models.CharField(max_length=100) 
    body = models.TextField() 
    pub_date = models.DateTimeField(null=True) 
    author = models.ForeignKey(User, null=True) 
    category = models.CharField(max_length=150, null=True) 
    picture = models.ImageField(upload_to='ad_pictures', default='') 

latestads.html

            {% for post in posts.all %} 
            <div class="advertisements"> 
              <div class="a-title"> 
                <h3><a href="">{{ post.title }}</a></h3> 
              </div> 
              <div class="a-image"> 
                <a href=""><img src="{{ post.picture.url }}"></a> 
              </div> 
              <div class="a-content"> 
                <p>{{ post.body }}</p> 
              </div> 
              <div class="a-date"> 
                <p>{{ post.pub_date }} by {{ post.author }}</p> 
              </div> 
            </div> 
            <img src="{{ post.image.url }}"> 
            {% endfor %} 

目录结构图: here

HTML 输出: here

我确定问题的一部分是 HTML 中的“post.picture.url”。 非常感谢任何见解。

谢谢

请您参考如下方法:

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^accounts/', include('accounts.urls')), 
    url(r'^classifieds/', include('classifieds.urls')), 
 
 ] +static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

请将 document_ROOT 更改为 document_root