我们在models.py中使用了ImageField,但是使用时发现总是404,网上的教程大部分是老版本Django的方法。
新方法:
引用之处:
<!-- {{ MEDIA_URL }}是前缀,即/media/ -->
<!-- {{ article.cover }} 是我自己预设的参数本身 -->
<img src="{{ MEDIA_URL }}{{ article.cover }}" class="article-cover"></img>
<!-- 结果:/media/article/2018/11/1.jpg -->
settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
# 加上下面这一行
'django.template.context_processors.media',
],
},
},
]
...
# 加上下面这两行
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urls.py
from django.urls import path
from . import views
# 加上下面这两行
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
path('', views.index, name='index'),
# 后面加上下面这行
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
end