09.模板详解 -- 上传文件

  • 安装Pillow模块,使用其中的models.ImageField函数
  • 修改settings.py文件
    media是服务器上用来保存图片文件的根目录,第1次有文件上传时自动创建
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')  
MEDIA_URL = '/media/'
  • 修改工程urls.py文件的urlpatterns配置项
    增加+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT),关联MEDIA_ROOTMEDIA_URL
    注意:static对应的导入包应为from django.conf.urls.static import static
urlpatterns = [
                  path('admin/', admin.site.urls),
                  url(r'^$', views.login),
                  url(r'^personal/', include('personal.urls'))
              ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  • 修改models.py文件
    在模型类中增加保存上传文件路径的字段
    images会自动创建在media目录下
user_img = models.ImageField(upload_to='images', null=True)
  • 修改模板文件
    文件上传通过form表单完成,method必是post,必须有enctype,input类型为file
  • 修改应用urls.py文件,增加上传表单处理函数的url
url(r'^upload/$', views.upload),
  • 修改views.py文件,增加表单处理函数
    request.FILES.get('img')完成从表单中获取文件数据,并上传到/media/images/目录中
def upload(request):
    p = PersonInfo.objects.get(user_id=2)
    p.user_img = request.FILES.get('img')  # 完成上传
    p.save()  # 将上传文件的存储路径存入数据表中

    content = {
        'img': p.user_img.url,  # 将上传文件的路径以字符串形式传递给模板
    }

    return render(request, 'editPersonal.html', content)
  • 修改模板文件,使用{{ img }}获得图片文件的路径




- end -

你可能感兴趣的:(09.模板详解 -- 上传文件)