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
<form action="/personal/upload/" method="post" enctype="multipart/form-data">
    <input type="file" name="img">
    <button type="submit">上传</button>
</form>
  • 修改应用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 }}获得图片文件的路径
<div class="photo" style="background-image: url('{{ img }}')">




- end -

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 项目部署到阿里云(nginx+uwsgi)上后,静态文件加载没有问题。但是在本地,使用开发服务器,却始终加载不成功...
    兰山小亭阅读 5,726评论 0 9
  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 2,174评论 0 8
  • 一、Django框架前言知识: 1、C/S和B/S的区别: C/S结构软件:客户端/服务端软件,即客户端要自己下载...
    月下独酌123阅读 5,051评论 0 36
  • Django是一个用 Python 编写的 Web 框架。Web 框架是一种软件,基于web框架可以开发动态网站,...
    guanalex阅读 7,461评论 0 5
  • 4 创建一个社交网站 在上一章中,你学习了如何创建站点地图和订阅,并且为博客应用构建了一个搜索引擎。在这一章中,你...
    lakerszhy阅读 2,253评论 0 7

友情链接更多精彩内容