Python之Django Media配置

1. 数据准备

在模板中使用如file、image等类型的字段
若有模板如下所示:

class User(AbstractUser):
    # 头像
    # upload_to为保存到响应的子目录中
    avatar = models.ImageField(upload_to='avatar/%Y%m%d/', blank=True)

    # 个人简介
    user_desc = models.TextField(max_length=500, blank=True)

    def __str__(self):
        return self.username

有界面如下所示:

	...
 <div >头像</div>
 <img src="{{ avatar }}" style="max-width: 20%;" ><br>
  ...

2. Media配置

1) 在settings.py中需做如下配置

  • 配置 MEDIA_URL 访问路径,代表用户通过URL来访问这个本地地址的URL
# 媒体资源访问统一路由
MEDIA_URL = '/media/'
  • 配置 MEDIA_ROOT 文件上传路径,设置用户上传文件的实际保存目录,该文件夹自动创建
# 媒体资源上传路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

2) 在项目url中需配置

urlpatterns = [
    ...
]

from django.conf import settings
from django.conf.urls.static import static
# 将/media/开头的url,转到实际的文件路径
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

3. 使用

在django后台视图代码中,渲染页面
注意:最好返回media对象的url,这样会加上 /media/前缀,不然会存在访问路径的问题。

class CenterView(LoginRequiredMixin, View):
    """
    用户中心
    """
    def get(self, request):
        """
        获取用户信息
        :param request:
        :return:
        """
        user = request.user

        user_info = {
            'username': user.username,
            # 注意,这里需要 返回url,不然是数据库存储的路径,没有加 media前缀
            'avatar': user.avatar.url if user.avatar else None,
            'user_desc': user.user_desc
        }
        return render(request, 'center.html', context=user_info)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值