上传头像
- 第一步:settings.py中配置内容
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'
- 第二步:添加路由
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
- 第三步:在项目主目录下创建爱你一个media文件夹
- 第四步:在models层创建字段用于对应上传的文件
class 模型类名(models.Model):
vatar = models.ImageField(upload_to='avatar',default='',verbose_name='头像')
- 第五步:views层中
users = 模型类名.objects.filter(username=username)
user = users[0]
user.avatar = request.FILES['avatar']
user.save()
return JsonResponse({'code':200})
上传文件
- settings.py中
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),)
MEDIA_ROOT = os.path.jin(BASE_DIR,'static/files')
- 在主项目下创建static/files/
- templates层
路径为:项目目录/index/templates/index/test_upload.html
<body>
//修改请求头中content-type:entype='multipart/form-data'
<form method='post' action='/index/test_upload' enctype='multipart/form-data'>
//添加csrf_token
{% csrf_token %}
//上传文件的标签
<input type='file' name='myfile'>
<input type='submit' value='上传'>
</form>
</body>
- 视图层
def test_upload(request):
if request.method == 'GET':
return render(request,'index/test_upload.html')
elif request.method == 'POST':
myfile = request.FILES['myfile']
file_path = os.path.join(settings.MEDIA_ROOT,myfile.name)
with open(file_path,'wb') as f:
data = myfile.file.read()
f.write(data)
return HttpResponse('上传成功')
- 分布式路由
urlpatterns = [
url(r'^test_upload$',views.test_upload)
]