Skip to main content
 首页 » 编程设计

python之django 模板无法正确加载在 ImageField 中上传的图像

2024年08月23日32exmyth

我知道这个问题已经被提出了很多次,但我已经尝试了很多不同的东西,但无法添加。我相信我可能忘记了在我的代码中添加一些愚蠢的东西,只是想不通是什么。下面是我的标题模型的代码:

class Heading(models.Model): 
    category = models.ForeignKey(Category) 
    title = models.CharField(max_length=5000) 
    content = RichTextField() 
    image= models.ImageField(null=True,blank=True) 
    date = models.DateField(default=datetime.now()) 
    time = models.TimeField(default=datetime.now()) 
    slug = models.SlugField(unique=True, null=True, blank=True) 

我还在我的项目 settings.py 中添加了以下代码

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

下面是我的urls.py

from django.conf.urls import include, url ,patterns 
from django.contrib import admin 
from django.conf import settings 
 
urlpatterns = [ 
    url(r'^tinymce/', include('tinymce.urls')), 
    url(r'^ckeditor/', include('ckeditor_uploader.urls')), 
    url(r'^grappelli/', include('grappelli.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^news/', include('news.urls')), 
] 
if settings.DEBUG: 
    urlpatterns += patterns( 
        'django.views.static', 
        (r'^media/(?P<path>.*)', 
        'serve', 
        {'document_root': settings.MEDIA_ROOT}), ) 

我的目录是这样设置的

下面是我的模板代码

{% extends "base.html" %} 
 
        {%block main_meat%} 
        {%if headings%} 
                {%for heading in headings%} 
                    <h1><a href="/news/headline/{{heading.slug}}">{{heading.title}}</a></h1> 
                    <br> 
                    <img src='{{heading.image}}'> 
                    {{heading.content|safe}} 
                {%endfor%} 
 
        {%endif%} 
    {%endblock%} 

当我在网络浏览器上检查元素时,这是我得到的图像的路径

<img src="./image_name.png"> 

subash 是我的项目名称,news 是应用程序的名称。我知道我已经发布了一个包含大量代码的长问题,如果有人能指出我遗漏了什么,请指出。

请您参考如下方法:

在您的模板中代替:

<img src='{{heading.image}}'> 

尝试:

{% if heading.image %} 
    <img src='{{heading.image.url}}'> 
{% endif %}