zoukankan      html  css  js  c++  java
  • FBV

    响应方式
    http协议,分为http请求与http响应,http响应内容也叫做http状态码,其中可以分为成功,重定向,异常响应(请求错误,和服务器错误)
    我们在视图函数中使用return方式返回相应的内容,
    return HTTPResponse(响应内容) --200,
    return HTTPResponseRedict('url') --302 重定向
    return HTTPResponseBadRequest('400') --400,访问页面不存在或者错误
    return HTTPResponseNotFound('404') -- 访问页面不存在或者url失效
    return JsonResponse(响应内容) 响应内容为json数据,默认值200
    return StreamingHttpResponse() 响应内容以流的方式输出,一般用于图片,文件等数据
    服务器成功接收,不同的响应方式是服务器高数浏览器当前请求发生了什么事情
    

    render与redirect

    render(request,template_name,context=None,content_type=None,status=None,using=None)
    python中locals()函数会把全局变量自动写出字典形式,这样我们context就不用之间构造了
    redirect() 不仅支持路由地址,还至此路由名字的传入
    
    文件的下载
    HttpResponse实现文件下载
    	r = HttpResponse(open(file_path,'rb'))
    	r['content_type'] = 'application/octet-stream'
    	r['Content-Disposition'] = "attachment;filename='下载后的文件名'"
    	return r
    原理:首先将文件读取并且载入内存,然后在浏览器上实现下载功能
    SteamingHttpResponse下载文件
    		r = SteamingHttpResponse(open(file_path,'rb'))
    		r['content_type'] = 'application/octet-stream'
    		r['Content-Disposition'] = "attachment;filename='下载后的文件名'"
    
    FileResponse下载文件
    	 r = FileResponse(open(file_path,'rb'),as_attachment=True,filename='下载的文件名')
    	 retuen r
    
    HTTP请求对象
    在Django中如果接收到http请求后,他会根据请求的信息创建一个WSGIrequest对象,并且作为视图函数的第一个参数request
    常见的request对象的属性与方法
    	属性
    		request.COOKIE  获取 Cookie信息
    		request.FILES 获取
    		request.GET 获取GET请求参数
    		request.POST 获取POST求取参数,用于获取表单数据
    		request.body 获取json数据
    		request.META 获取请求头中的所有的信息
    		request.method 获取请求方式
    		request.path 获取请求的 路由地址
    		request.session 用于操作服务器的对话信息
    		request.user 内置的数据模型User对象
    	
    	方法
    		request.is_secure() 是否采用的是HTTPS协议
    		request.is_ajax() 是否采用Ajax发送的请求
    		request.get_post() 获取服务器域名
    		request.get_full_path()  获取路由地址(不包括域名和端口)
    		request.get_raw_uri() 获取完整的网址信息(包括域名和端口)
    
    文件的上传功能
    前端中form中要写enctype="multipart/form-data",如果没写我们就不能通过FILES属性在获取文件信息了,而是POST来获取
    eg :delete_cookie()
    file_object = request.FILES.get('文件名',None)
    if file_object:
    	file = open(path,wb+)
    	for chunk in file_object.chunks:
    		file.write(chunk)
    文件的基本信息获取
    	file_object.name 获取文件名字
    	file_object.size  获取文件的大小
    	file_object.content_type 获取文件类型
    	file_object.read() 读取整个上传的文件,适合小文件上传
    	file_object.chunks() 响应式读取文件,适合大文件 上传
    	file_object.multiple_chunks() 判断文件的大小(2.5M为参照物),用于判断使用哪种方式上传文件
    
    cookie的响应式布局
    response.set_cooki()
    response.delete_cookie()
    
    装饰器的使用首先我们先写一个装饰器,登入装饰器
    from django.shortcuts import redirect
    def auth(func):
        def inner(request,*args,**kwargs):
            v = request.COOKIES.get('username')
            if not v:
                return redirect('/login/')
            return func(request,*args,**kwargs)
        return inner
    
    FBV就相当于直接函数一样使用,在函数前加上@auth
    
    CBV的使用,视图函数以类的形式写,如果想要在对get或者post方式做装饰,在前面加上 @method_decorator(auth),如果相对其中都做装饰,在类前或者在display方法前添加
    
    from django import views
    from django.utils.decorators import method_decorator
    
    #@method_decorator(auth,name='dispatch')
    class Order(views.View):
      # @method_decorator(auth)
        def dispatch(self, request, *args, **kwargs):
            return super(Order,self).dispatch(request, *args, **kwargs)
    
        @method_decorator(auth)
        def get(self, reqeust):
            return render(reqeust, 'index.html',)
    
        def post(self, reqeust):
            return render(reqeust, 'index.html',})
    
  • 相关阅读:
    dhl: ASP.NET MVC1.0 的图片(文件)上传功能
    一些不错的sql语句
    ASP.NET使用Memcached高缓存实例
    教你加快Win7 的启动速度
    写个VS2008使用单元测试NUnit的方法,希望对大家有帮助
    C#中ToString格式大全
    JQuery UI accordion学习笔记
    dhl:Sql表子查询
    windows 7 怎么在文件夹内开启图片预览功能
    教你如何将 优酷网等视频网站的视频外链时自动播放
  • 原文地址:https://www.cnblogs.com/KingOfCattle/p/14312917.html
Copyright © 2011-2022 走看看