Django day06-----静态文件的上传

(1)静态文件夹需要在setting里面进行声明
STATICFILES_DIRS=[(os.path.join(BASE_DIR,‘static’))]
(2)可以直接通过服务器来进行静态文件的访问
(3)利用新的文件来接受上传的文件

def upload_file(request):
    if request.method=="GET":
        return render(request,'upload.html')
    elif request.method=="POST":
        icon=request.FILES.get("icon")
        with open(r"C:\Users\叉叉叉\PycharmProjects\DjangoModel\static\img\icon.jpg",'wb') as save_file:#注意这个地方有一个r字符,否则会报错
            for part in icon.chunks():# 打碎开来再写
                save_file.write(part)
                save_file.flush()
        return HttpResponse("文件上传成功")
        <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form action="{% url 'relation:image_file' %}" method="post"  enctype="multipart/form-data">
    {% csrf_token %}
        <div>用户名</div>
    <input type="text" name="username">
      <div>文件</div><input type="file" name="icon">
    <br>
    <input type="submit" value="上传">



</form>
</body>
</html>

注意中间存在一个把图片打碎之后又重新组合的过程
同时还存在一个相对路径的问题:

class UseModel(models.Model):
    u_name=models.CharField(max_length=16)
    #upload _to 的相对路径是指 MEDIA_ROOT 媒体的根目录
    u_icon=models.ImageField(upload_to='icons')




MEDIA_ROOT = os.path.join(BASE_DIR,'static/upload')
def image_file(request):
    if request.method=="GET":
        return render(request,'upload.html')
    elif request.method=="POST":
        icon=request.FILES.get("icon")
        username=request.POST.get("username")
        user=UseModel()
        user.u_icon=icon
        user.u_name =username
        user.save()
        return HttpResponse("上传成功%d" %user.id)
    
 

通过路径从而实现图片的获取

def mine(request):
    username=request.GET.get("username")
    user=UseModel.objects.get(u_name=username)
    print(user.u_name)
    print('/static/upload/'+user.u_icon.url)
    print(user.u_icon.url)
    data={
        "usename":user.u_name,
        "icon_url":'/static/upload/'+user.u_icon.url
    }
    return render(request,'picure.html',context=data)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值