django学习——media处理上传图片、文件方法设置

本文介绍如何在Django项目中实现用户头像上传功能,包括模型定义、media文件夹设置、URL配置等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版本:django 1.11

对于用户上传文件的存储,一般采用media进行处理。以用户头像为例进行说明,处理方法如下:

1、模型建立

from django.db import models
from django.contrib.auth.models import AbstractUser

from datetime import datetime


class UserProfile(AbstractUser):
    """
    自定义用户
    """
    nick_name = models.CharField(max_length=20, verbose_name='昵称', default='')
    address = models.CharField(max_length=200, verbose_name='地址', default='')
    telephone = models.CharField(max_length=11, verbose_name='手机')
    gender = models.CharField(max_length=10, choices=(('male', '男'), ('female', '女')), default='male', verbose_name='性别')
    birthday = models.DateField(verbose_name='生日', null=True, blank=True)
    image = models.ImageField(max_length=100, upload_to='users/image/%Y/%m', default='users/image/default_big_14.png', verbose_name='头像')

    class Meta:
        verbose_name = '用户信息'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.username

自定义用户,并完成头像(image)的字段设计,定义了头像的类型,ImageField,以及上传位置。

2、建立media文件夹

一般将用户上传的文件放置在media文件夹中。
这里写图片描述

3、setting.py中设置

主要有三个地方需要设置:

  • MEDIA_URL = ‘/media/’,设置该路径为了在模板中定位图片的位置,<img src="{{ MEDIA_URL }}{{ user.image }}"/> 这样便可以从浏览器中得到头像的url地址,从而显示出来

  • MEDIA_ROOT = os.path.join(BASE_DIR, ‘media’) , 设置该路径是为了将新建的‘media’添加到根搜索路径下,这样在建立用户模型时的image = models.ImageField(max_length=100, upload_to='users/image/%Y/%m', , upload_to 指定的是相对闻之,通过设定MEDIA_ROOT,便可以将头像存储在:127.0.0.1:8000/meida/user/image/%Y/%m,目录下了。

  • 设置TEMPLATES中的上下文管理器,添加media进来,如果不添加的话,模板中的{{ 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.template.context_processors.media',
            ],
        },
    },
]

4、配置url

因为浏览器中显示图片,会从如下地址中寻找:127.0.0.1:8000/meida/user/image/%Y/%m , 如果不配置media的url地址的话,该图片是无法被找到的。配置方法如下:

from django.conf.urls import url
from django.views.static import serve

from mxonline3.settings import MEDIA_ROOT

urlpatterns = [

    #配置上传文件的访问处理函数
    url(r'^media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT}),

]

经过如上几个步骤,便可以通过后台将图片写入数据库中,并从前端展示出来了。缺一不可!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值