"第一种方法:普通字段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("注册失败")