1, 定义模型
class UserLearn(models.Model):
u_name = models.CharField(max_length=16)
u_icon = models.ImageField(verbose_name='图像', upload_to='icons')
ImageField 专门用来上传图像
fieldField 文件上传
(1)verbose_name 别名注释(也可不加,为了让别人一眼就能看出来,没什么用)
(2)upload_to 上传后的目录
(3)这里需要导入专门处理图片的库pillow pip install pillow
2,定义视图
def douserRegister(request):
username = request.POST.get('username')
usericon = request.FILES["usericon"]
user = UserLearn()
user.u_name = username
user.u_icon = usericon
user.save()
return HttpResponse('用户注册成功')
def userRegister(request):
return render(request,'four/userRegister.html')
username 必须用post请求得到,相当于key键
usericon 相当于value,这里用列表的形式得到,并且用FILES请求
3,定义HTML页面
<form action="{% url 'four:douserRegister' %}" method="post" enctype="multipart/form-data" >
{% csrf_token %}
<span>用户名</span><input type="text" name="username" placeholder="请输入用户名">
<br>
<span>头像</span><input type="file" name="usericon" placeholder="请选择图像">
<br>
<input type="submit" value="注册">
</form>
说明:
(1)图片的上传就是在数据库中保存这个图片的路径,调用的时候调用的是路径
(2)文件的上传必须用enctype上传,不像字符串,建立个管道,把整个文件打包分成很多的小包,进行拆分,传递过去,enctype就是打包加密的
enctype=”multipart/form-data”
(3)图像的传送,类型用file
(4)在form表单中加一个反向解析,跳转页面