我們在models.py中使用了ImageField出嘹,但是使用時(shí)發(fā)現(xiàn)總是404唯咬,網(wǎng)上的教程大部分是老版本Django的方法纱注。
新方法:
引用之處:
<!-- {{ MEDIA_URL }}是前綴,即/media/ -->
<!-- {{ article.cover }} 是我自己預(yù)設(shè)的參數(shù)本身 -->
<img src="{{ MEDIA_URL }}{{ article.cover }}" class="article-cover"></img>
<!-- 結(jié)果:/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