Django视图的分析及文件上传操作
Django里面的视图分为两部分:
1>基于方法的视图fbv(function base view)
在urls文件里面的对应关系:
1 url(r'^student_list/', views.student_add),
在view文件里面的具体方法实现 例如:
def student_add(request):
if request.method=='POST':
s_name=request.POST.get('stud',None)
g_id=request.POST.get('grades')
models.Student.objects.create(sname=s_name,grade_id=g_id)
return redirect('/student_list/')
grade_obj=models.Grade.objects.all()
return render(request,'student_add.html',{'grade':grade_obj})
2>基于类的视图 cbv(class base view)
在urls文件里面的对应关系:
1 url(r'^student_add/', views.Student_Add.as_view()),
在view文件里面的具体类的实现 例如:
from django.views import View #写类之前必须导入view的包 并且类必须继承View
1 class Student_Add(View):
2 def get(self,request):
3 grade_obj = models.Grade.objects.all()
4 return render(request, 'student_add.html', {'grade': grade_obj})
5 def post(self,request):
6 s_name = request.POST.get('stud', None)
7 g_id = request.POST.get('grades')
8 models.Student.objects.create(sname=s_name, grade_id=g_id)
9 return redirect('/student_list/')
request:
request.path 获取的是当前请求的路径(不包含IP端口和url地址)
request.body 请求体 是byte类型数据 是指request.POST的数据是来自于页面的body部分
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
先在HTML里写入上传文件的form表单:
1 <form action="/update/" method="post" enctype="multipart/form-data">
2 <input type="file" name="update_file">
3 <input type="submit" value="开始上传">
4 </form>
urls里面写入对应关系:
1 url(r'update/',views.update)
views里面对应大函数:
1 def update(request):
2 if request.method=='POST':
3 name=request.FILES['update_file'].name #获取上传文件的名字
4
5 with open(name,'wb')as f: #按照获取的文件名打开 进行写操作
6 for i in request.FILES['update_file'].chunks(): #获取文件内容循环读取并写入
7 f.write(i)
8 return HttpResponse('OK')
9 return render(request,'upadte.html')