Media管理
注意:如果在settings.py中将DEBUG改为False,那么配置的STATIC_URL和STATICFILES_DIRS将会自动失效,一般生产环境都是apache,nginx服务器来转发,不过也可以配置url来处理
settings.py中增加变量
STATIC_ROOT = os.path.join(BASE_DIR, "static")
urls.py中配置url
url(r'^static/(?P<path>.*)/$', serve, {"document_root": STATIC_ROOT}),
处理图片案例:
如果需要将后台存储的图片展示到HTML中,需要经过以下步骤:
1. 将image的路径地址从数据库中取出来,传递到html中
2. 在settings中配置处理media的templates模板和media路径
3. 配置image的url, 需要import static模块中的serve方法
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' # 1.10版本就是这个media模块 1.9版本是django.core.context_processors.media
],
},
},
]
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
urls.py中的配置
该url专门处理media路径访问
from django.views.static import serve
url(r'^media/(?P<path>.*)/$', serve, {"document_root": MEDIA_ROOT}),
views.py中的配置
class OrgView(View):
"""
课程机构列表功能
"""
def get(self, request):
#课程机构
all_orgs = CourseOrg.objects.all()
#城市
all_citys = CityDict.objects.all()
return render(request, "org-list.html", {
"all_orgs": all_orgs,
"all_citys": all_citys
})
html中的配置
注意这里的 MEDIA_URL 是在settings.py中配置好的
{% for course_org in all_orgs %}
....data-url="{{ MEDIA_URL }}{{ course_org.image }}"
{% endfor %}