博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django view 视图
阅读量:6106 次
发布时间:2019-06-21

本文共 3558 字,大约阅读时间需要 11 分钟。

  • request.method 判断请求方式 8种

    GET : 获取一个页面

    POST:       提交数据  PUT :       上传  HEAD:           不用上传就获取数据  DELETE:         删除 Request-URL 标识的  TRACE:          回显服务器收到的请求  OPTIONS:    测试服务器功能是否正常  CONNECT:    将链接改为管道方式常用 GET  POST 请求  request.POST      form表单提交POST请求传递的数据    获得一个{}   取值方式 []  get()  request.GET         URL地址上的参数   获得一个{}   取值方式 []   get()

request 相关方法

request.method           -->> 判断请求方式   request.POST             -->> form表单提交POST请求传递的数据    获得一个{}   取值方式 []  get()   request.GET              -->> URL地址上的参数   获得一个{}   取值方式 []   get()   request.path_info            -->> 获取当前请求的路径 不包含参数   request.get_full_path()       -->> 获取当前请求的路径 含参数   request.get_host()       -->> 获取请求主机的 ip地址及端口号   request.body                 -->> 请求体 byte类型 request.POST就是从 body 中提取的   request.COOKIES              -->> 获取所有的 cookies 字典形式   request.META                 -->> 获取所有的HTTP头部信息  是一个字典   request.session              -->> 获取一个可读又可写 的 类似字典的 对象   request.is_secure()          -->> 判断请求是否安全   request.is_ajax()            -->> 判断是否是 ajax 请求   request.get_signet_cookies(key,salt='盐') -->> 获取假眼的 cookies 字典形式   request.FILES      -->>  上传的文件      1. enctype  = 'multipart/form-data'    2. method ='post'    name   {% csrf_token %}    3. 文件对象的方法  chunks()
  • Response

    1. HttpResponse('字符串') ——》 字符串
    2. render(request,'模板文件名',{k1:v1}) ——》完整的页面
    3. redirect(‘要跳转的地址’) ——》 重定向 响应头: Location:url
    1. ret = HttpResponse(‘’) ret['Location:'] = url
    4. JosnResponse({}) Content-Type : application/json
    1. 序列化非字典类型时: safe=False

    JsonResponse

    传递 json 类型的 数据
    from django.http import JsonResponse

    def json_test(request):    data = {'name': 'alex', 'pwd': 'alexdsb'}    return JsonResponse(data)  # Content-Type: application/json    # return HttpResponse(json.dumps(data), content_type='application/json')  # Content-Type: text/html; charset=utf-8

    返回值

    导入三件套 from django.shortcuts import render, redirect, HttpResponse, reverse redirect(reverse('/index/')) 重定向  + 反向解析 def login(request):  return HttpReponse('字符串')        返回一些字符串   def regist(request):      return  render(request,'模板的文件名',{"data":"name"})      返回一个完整的HTML页面 def index(request):  return redirect('要跳转的地址')       重定向    Location : 地址

4.CBV FBV

  • FBV (function based view ) 写url和函数的对应关系
    from django.shortcuts import render, redirect, HttpResponse
    def login(request):
    err = ''
    if request.method == 'POST':
    name = request.POST.get('name')
    pwd = request.POST.get('pwd')
    if name == 'root' and 'pwd' == '123':
    return HttpResponse('登录成功')
    err = '账号或密码错误'
    return render(request,'login.html',{'err':err})
  • CBV (class based view) 写url和类的对应关系

    from django.views import View
    import time
    class Index(View):

    # 重写 父类的 dispatch 方法  计算执行时间      def dispatch(self, request, *args, **kwargs):        # 操作        # start = time.time()      ret = super().dispatch(request, *args, **kwargs)        # end = time.time()        # print('时间:{}'.format(end - start))        # 操作        return ret  # GET 请求    def get(self, request):      return render(request,'index.html')  # POST 请求    def post(self, request):      data = request.POST.get('data')      print(data)      return self.get(request)
  • CBV 的流程

    CBV的流程:

    1. AddPub.as_view()执行 ——》  view函数2. 请求到来的时候执行view函数:   1. self   = AddPub(*)   2. self.request = request    3. 执行self.dispatch(request,)    ——》如果AddPub定义了dispatch方法,执行自己的,没有执行父类的      1. 判断请求方式  http_method_names      2. 允许的话:         1. 通过反射获取对应请求方式(get/post)的方法  ——》handler      3. 不允许:         1.     http_method_not_allowed ——》 handler      4. 执行handler  ——》 拿到HttpResponse对象

转载于:https://www.cnblogs.com/zhang-zi-yi/p/10158897.html

你可能感兴趣的文章
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
查看>>
Azure 标准与高级托管磁盘存储的相互转换
查看>>
Linux C/C++ 链接选项之静态库--whole-archive,--no-whole-archive和--start-group, --end-group
查看>>
【Java】Java NIO
查看>>
[原创]用逻辑嗅探破解接触式IC卡口令
查看>>
flink 入门
查看>>
windows/Linux下的程序员文档浏览工具
查看>>
Java中String直接赋字符串和new String的区别 如String str=new String("a")和String str = "a"有什么区别?...
查看>>
PostgreSQL的表空间
查看>>
springboot项目接入配置中心,实现@ConfigurationProperties的bean属性刷新方案
查看>>
php 基础代码大全(不断完善中)
查看>>
正则表达式爬取猫眼电影
查看>>
Unity iOS 3DTouch 接入
查看>>
Mariadb配置文件优化参数(仅供参考)
查看>>
[转]Windows Server 8 Beta 介绍 (03) –Windows PowerShell Web Access简介 (中)
查看>>
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(1):调用Web Service、调用页面中的类方法...
查看>>
iOS - (个人隐私钱包调用系统本机TouchID指纹锁验证)
查看>>
实现 iPhone 电子书的分页显示功能
查看>>
[转]三五个人十来条枪 如何走出软件作坊成为开发正规军
查看>>
Struts2---->OGNL
查看>>