看啥推荐读物
专栏名称: GHope
比起鲜衣怒马的牵黄擎苍啊,我还是更喜欢白衣策马的仗剑天涯。
今天看啥  ›  专栏  ›  GHope

上传图片

GHope  · 简书  ·  · 2018-10-03 14:48

在很多的应用场景中都需要上传图片,图片可以作为头像,文章的展示图片,或者web的banner图片等等,这时候就需要了解django中怎么去设置图片上传,并且实现该上传图片的功能。

安装PIL库

pip install Pillow

models中图片字段的定义

icon = models.ImageField(upload_to='upload', null=True, verbose_name='头像')

配置上传图片的保存路径

在工程目录下的settings.py中配置media_url和media_root路径

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

在工程目录下的urls.py文件中配置media的目录为静态目录

from django.contrib.staticfiles.urls import static

from day06 import settings

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

在项目中创建media的目录

创建media

实现保存图片

在注册的视图函数中添加 request.FILES以及icon=request.FILES.get('icon')即可

    if request.method == 'POST':
        # 校验参数
        form = UserForm(request.POST, request.FILES)

        # 判断校验是否成功(is_valid()为真即为校验成功)
        if form.is_valid():
            # 注册
            password = make_password(form.cleaned_data['password'])
            Users.objects.create(username=form.cleaned_data['username'],
                                 password=password,
                                 icon=request.FILES.get('icon'))
            # 跳转到登录页面,使用namespace:name
            return HttpResponseRedirect(reverse('users:login'))

        else:
            return render(request, 'register.html')

页面中解析上传的图片信息

<p>图片:<img src="/media/{{ user.icon }}"></p>



原文地址:访问原文地址
快照地址: 访问文章快照