关于Django上传文件保存文件的一点细节


@login_required()
def newCategory(request):
    result = {'code': 400}
    if request.method == 'POST':
        category_name = request.POST.get('name',None)
        category_creator = request.user
        print(category_creator)
        if category_name and category_creator:
            if models.Category.objects.filter(name=category_name):
                result['message'] = '该分类已存在'
            else:
                newCate = models.Category.objects.create(name=category_name, creator=category_creator)
                category_poster = request.FILES.get('poster', None)#
                if category_poster:
                    newCate.poster = category_poster 
                    #save()函数会自动保存文件Category model中poster的upload_to='xxx'里。
                newCate.save() ##这个upload是相对与settings.py中的MEDIA:
                # MEDIA_URL = '/upload/'
                # #MEDIA_ROOT = os.path.join(BASE_DIR, 'upload')#文件上传路径
                result['code'] = 200
                result['category_id'] = newCate.pk
                result['category_name'] = newCate.name
        else:
            print("出错了")
        return HttpResponse(json.dumps(result))

我要说的如代码所述。
然后,当我学到formsmodel 这个知识的时候,我发现

def handle(request):
   if request.method == "POST":
   		form = xxxForm(request.POST, request.FILES)
   		if form.is_valid():
   				form.save()

我发现它直接调用save()函数就完成接受数据并在数据库创建记录了,formmodel好用归好用,但是有一下场景特别不方便,比如修改头像啊单单改动一处地方这些什么的。
我就试一试orm Model中的save()方法。发现它也能这么干。示例在开头那堆代码。

初学者,没有能力去翻看源码讲清实现代码。但是这个发现让我对Django感到更加兴奋。特此记录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值