zoukankan      html  css  js  c++  java
  • 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')
  • 相关阅读:
    The difference between applicationContext.xml in Spring and xxx-servlet.xml in SpringMVC
    01Java代码是怎么运行的
    Qt5.7不能加载MySql驱动问题(需要重新编译驱动)
    大前端工具介绍
    ARTS 第 1 周
    【标题】行动派
    Matlib’s lsqnonlin 和 scipy.optimize’s least_square
    每日背单词
    AngularJS入门篇
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-adjust
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9572770.html
Copyright © 2011-2022 走看看