Django中static & media的简单配置及图片上传实践

static & media

在Django应用的文件夹下,经常会发现这两个文件夹:static, media; static称为静态文件夹,用于存放CSS, JavaScript, 网站logo等不变的文件;相对的,把media称为媒体文件夹,用于存放用户上传的图片。

static 配置和使用

  • 配置项目的settings.py:
STATIC_URL = '/static/'  # 静态文件别名(相对路径) 和 绝对路径
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'app01/static'),
)
# STATIC_ROOT 配置部署的时候才用
  • 使用:
{% load static %}
<img src="{% static 'img/default.jpg' %}" alt="default_photo"/>

media 配置和使用

如果需要保存用户上传的图片或文件,需要作如下配置:

  • 配置项目的settings.py:
MEDIA_URL = "/media/"   # 媒体文件别名(相对路径) 和 绝对路径
MEDIA_ROOT = (
    os.path.join(BASE_DIR, 'app01/media')
)
  • 配置路由:
from django.conf.urls import url
from django.views.static import serve
from . import settings

urlpatterns = [
    # ... the rest of your URLconf goes here ...
    url(r'^media/(?P<path>.*)$', serve, {
  'document_root': settings.MEDIA_ROOT})
]
  • models.py中设置上传图片/文件字段:
from django.db import models


class UserInfo(models.Model):
    username = models.CharField(verbose_name='用户名', max_length=32)
    avatar = models.FileField(verbose_name='头像', upload_to='upload/avatar/')

upload_to相当于上传到app01/media/upload/avatar/目录下。

注意:

FileFieldImageField字段适用于存储文件/图片,出于性能考虑,文件并不直接保存到数据库,而是保存在文件系统里,因此该字段只是记录一个路径而已。

这个路径是相对于MEDIA_ROOT的,要想得到文件/图片的绝对路径,需要用.url方法。比如,要在页面中显示用户user_obj的头像,那么在模板中可以这样写:

<img src="{
   { user_obj.avatar.url }}" alt="user_avatar">

其它参考:
http://blog.csdn.net/java2king/article/details/5334303

http://blog.csdn.net/junli_chen/article/details/47335919

用户上传头像实践

准备工作

  • 新建一个项目,创建应用app01,如上配置好sta
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值