@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感到更加兴奋。特此记录