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 %}

 

posted @ 2017-03-05 15:45  Vincen_shen  阅读(1216)  评论(0)    收藏  举报