美文网首页
09.模板详解 -- 上传文件

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

作者: __深蓝__ | 来源:发表于2019-03-19 14:48 被阅读0次
  • 安装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 -

相关文章

网友评论

      本文标题:09.模板详解 -- 上传文件

      本文链接:https://www.haomeiwen.com/subject/frssmqtx.html