您好,登錄后才能下訂單哦!
這篇文章主要講解了“為什么django的template中無法引用MEDIA_URL”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“為什么django的template中無法引用MEDIA_URL”吧!
配置如下
TEMPLATES = [
下面
'context_processors': [
中添加
'django.core.context_processors.media',
會(huì)把MEDIA_URL 配置在template中
這樣在template下面 就可以引用MEDIA_URL了
補(bǔ)充知識(shí):在django中使用 MEDIA_URL 和 MEDIA_ROOT
在django上傳圖片前端使用動(dòng)態(tài)的配置方法
MEDIA_ROOT 代表著 要上傳的路徑會(huì)和你在models中寫的上傳的路徑進(jìn)行拼節(jié)形成最終文件上傳的路徑
MEDIA_URL主要就是映射了 在前端使用media_url當(dāng)你的media_root發(fā)生改變的時(shí)候不用去更改前端模板中的內(nèi)容
前端模板中的寫法
后面是從數(shù)據(jù)庫中 查詢出來的 上傳文件的地址url
"{{ MEDIA_URL }}{{ course_org.image }}"
前端生成的路徑
"/media/org/2017/07/qhdx-logo.png"/
要想正常的顯示圖片 還需要下面幾步:
1 在settings 中配置路徑
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
2 在TEMPLATES 中添加一個(gè)上下文環(huán)境 'django.core.context_processors.media', 這個(gè)會(huì)
自動(dòng)的把MEDIA_URL 注冊(cè)到前端的模板中的 沒有這個(gè)上下文環(huán)境 MEDIA_URL在前端是沒有顯示的
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.core.context_processors.media', ], }, },
3 在url中配置media請(qǐng)求的url
首先需要導(dǎo)入下面的庫 和在settings 中配置的 MEDIA_ROOT上傳路徑
from django.views.static import serve
from MxOnline.settings import MEDIA_ROOT
配置url 固定的 里面的內(nèi)容不能改的
url(r'media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT}),
感謝各位的閱讀,以上就是“為什么django的template中無法引用MEDIA_URL”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)為什么django的template中無法引用MEDIA_URL這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。