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')

 

posted @ 2018-09-02 09:30  青红*皂了个白  阅读(390)  评论(0编辑  收藏  举报