• Django框架之视图


    Django框架之视图层

    什么是视图函数

    视图函数,属于Django的视图层,默认定义在views.py文件中,是用来处理web请求信息以及返回响应信息的函数。并且这里的视图函数并不仅仅指代函数,也包括类。

    请求对象

    Django将http协议请求报文中的请求行、首部信息、内容主体封装到了HttpRequest对象中。将HttpRequest对象当做参数传给视图函数中去,在视图函数中,通过访问该对象的属性便可以提取http协议的请求数据

    常用属性
    • method

      获取请求方式

    • GET

      获取GET请求携带的数据,将数据封装成QueryDict对象,通过get(key)方法获取指定值,如果该值有多个,使用getlist

    • POST

      获取POST请求携带的数据,将数据封装成QueryDict对象,通过get(key)方法获取指定值,如果该值有多个,使用getlist

    • FILES

      获取表单提交上来的文件

    • path

      获取url地址的路径部分

    • get_full_path()

      获取完整的url地址

    • COOKIES

      获取所有的cookie

    • session

      一个既可读又可写的类似于字典的对象,表示当前的会话

    • is_ajax()

      判断是否是通过ajax发送的请求

    响应对象

    • HttpResponse

      向前端页面返回一个字符串

    • render

      render(request, template_name, context)
      参数:
          1、request:必须,用于生成响应的请求对象,固定必须传入的第一个参数
      
          2、template_name:必须,要使用的模板的完整名称,必须传入,render默认会去templates目录下查找模板文件
      
          3、context:可选,可以传入一个字典用来替换模块文件中的变量
      
    • redirect

      返回一个重定向地址,可以使接口也可以是外部url

    • JsonResponse

      返回一个json字符串

      # 方式一:
      import json
      def my_view(request):
          data=['gredae','dijia']
          return HttpResponse(json.dumps(data) )
      # 方式二:
      from django.http import JsonResponse
      def my_view(request):
          data=['gredae','dijia']
          return JsonResponse(data,safe=False)
          #默认safe=True代表只能序列化字典对象,safe=False代表可以序列化字典以外的对象
      

    FBV和CBV

    之前我们讲过视图函数不仅仅是函数,还可以是类。

    基于函数的视图:Function base view

    urls.py

    from django.urls import url
    from app01 import views
    
    urlpatterns = [
        url(r'^login/',views.login), # 必须调用类下的方法as_view
    ]
    

    views.py

    from django.shortcuts import render
    
    def login(request):
        return render(request,'login.html')
    
    基于类的视图:Class base view

    urls.py

    from django.urls import url
    from app01 import views
    
    urlpatterns = [
        url(r'^login/',views.LoginView.as_view()), # 必须调用类下的方法as_view
    ]
    

    views.py

    from django.shortcuts import render
    from django.views import View
    
    class LoginView(View):
    	# 处理GET请求
        def get(self,request):
            return render(request,'login.html')
    	# 处理POST请求
        def post(self,request):
            return render(request,'login.html')
    
  • 相关阅读:
    大宗商品经营管理特点与风险节点
    大宗商品企业风险管理与套期会计课程
    推荐一个php7+ mongodb三方类
    利用Redis锁解决高并发问题
    PHP socket初探 --- 关于IO的一些枯燥理论
    Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化
    PHP利用Mysql锁解决高并发
    PHP AES cbc模式 pkcs7 128加密解密
    PHP 利用文件锁处理高并发
    Redis 应用场景【商品拼团抢购】
  • 原文地址:https://www.cnblogs.com/Gredae/p/11756195.html
Copyright © 2020-2023  润新知