django11--上传头像图片文件"

 "第一种方法:普通字段CharField上传图片文件"

1.在models中,写入属性:avater = models.CharField(max_length=255, default="/static/myblog/git.png")

2. 迁移数据:python manage.py makemigrations

    同步数据库:python manage.py migrate

3.在视图中内容:

  (1)获取文件: avater = request.FILES["avater"] 

  (2)拼接上传路径:path = "static/img/" + avater.name

           注意上传的路径,默认在项目目录下去找

  (3)以流的方式打开上传 :with open(path, "wb") as f:

  (4)分片写入:

                  for file in avater.chunks():

                            f.write(file)

  (5)保存数据库:

                user = models.User(name=name, age=age, avater=path)

                user.save()

4.在HTML页面中写入:

     上传头像:<input type="file" name="avater">

     输入框type是file
     请求方法必须是post
     在form标签指定enctype="multipart/form-data" #编码类型,既有文本数据,又有文件等二进制数据的意思

5.配置路由:

              app_name = "myblog"

              urlpatterns = [  url(r'^register/$', views.register, name="register")  ]

def register(request):
    if request.method == "GET":
        return render(request, "myblog/register.html")
    elif request.method == "POST":
        name = request.POST.get("name")
        age = request.POST.get("age")

        # 1.获取文件
        avater = request.FILES["avater"]
        # 2.拼接上传路径
        path = "static/img/" + avater.name
        # 3.以流的方式打开上传
        with open(path, "wb") as f:
            # 4.分片写入
            for file in avater.chunks():
                f.write(file)

        print(name, age, path)
        try:
            user = models.User(name=name, age=age, avater=path)
            user.save()
            return HttpResponse("注册成功")
        except:
            return HttpResponse("注册失败")

"第二种方法:ImageField上传图片文件"

1.在models中,写入属性:avater1 = models.ImageField(upload_to="static/img/", default="/static/myblog/git.png")

2. 迁移数据:python manage.py makemigrations

    同步数据库:python manage.py migrate

3.在视图中内容:

    (1)获取文件: avater = request.FILES["avater"] 

    (2)直接保存图片数据 :

           user = models.User(name=name, age=age, avater1=avater)

           user.save()

4.在HTML页面中写入:

 上传头像:<input type="file" name="avater">

     输入框type是file
     请求方法必须是post
     在form标签指定enctype="multipart/form-data" #编码类型,既有文本数据,又有文件等二进制数据的意思

5.配置路由:

              app_name = "myblog"

              urlpatterns = [  url(r'^register/$', views.register, name="register")  ]

def register(request):
    if request.method == "GET":
        return render(request, "myblog/register.html")
    elif request.method == "POST":
        name = request.POST.get("name")
        age = request.POST.get("age")

        # 1.获取文件
        avater = request.FILES["avater"]
        print(name, age, avater)
        try:
            # 2.直接保存图片数据
            user = models.User(name=name, age=age, avater1=avater)
            user.save()
            return HttpResponse("注册成功")
        except:
            return HttpResponse("注册失败")

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值