Django 视图

一、视图函数对应的文件和文件夹

1、文件

在这里插入图片描述

2、文件夹–当有很多的业务功能时,一个视图函数文件不满足业务需求,需拆分成多个视图函数文件

在这里插入图片描述

二、绝对导入和相对导入 urls

1、绝对导入

在这里插入图片描述

2、相对导入

在这里插入图片描述## 3、注意事项
注意实现:不要再项目根目录做相对导入。

原则:

  • 绝对导入
  • 相对导入(层级深)

三、视图函数参数分析–requests

1、requests是什么呢?

对象,包裹,可以放很多东西。
requests是一个对象,存放了浏览器给咱们发过来的所有内容,所以含有:

  • 请求相关所有的数据: 当前访问的url、请求方式、…
  • django额外添加的数据–比如处理的当前对象
def user_add(request):
    #1 获取当前的URL /user/add
    print(request.path_info)
    #2、URL传递的参数
    print(request.GET)
    print(request.GET.get('age'))
    # 3、获取请求方式
    print(request.method)
    # 4、如果是POST请求,传递请求体(原始数据)
    # b'{"name":"lxindf","age":"34"}
    print(request.body)
    # 4.1 请求体+  请求头
    # b'mobilephone=13131567898&pwd=123456&regname=%E5%8F%8D%E5%80%92%E6%98%AF'
    # Content-Type:application/x-www-form-urlencoded
    print(request.POST)
    print(request.POST.get('regname'))
    print(request.POST.get('mobilephone'))
    print(request.POST.get('pwd'))
    # 4.2 请求体+请求头   文件
    print(request.FILES)  # 文件格式           + multipart/form-data
    print(request.FILES.get("n1"))
    print(request.FILES.get("n2"))

    return HttpResponse("新增用户")

2、post请求,请求原始数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

四、视图函数返回值(涉及重定向)

在这里插入图片描述

- HttpResponse
- JsonResponse
- render
- redirect
from django.shortcuts import HttpResponse, redirect, render
from django.http import JsonResponse

def auth(request):
    pass

def login(request):
    # 1.获取请求数据
    print(request)

    # 2.根据请求数据进行条件的判断 GET/POST   GET.get("xx")    POST.get("xx")

    # 3.返回数据

    # 3.1 字符串/字节/文本数据(图片验证码)
    return HttpResponse("login")

    # 3.2 JSON格式(前后端分离、app小程序后端、ajax请求)
    data_dict = {"status": True, 'data': [11, 22, 33]}
    return JsonResponse(data_dict)

    # 3.3 重定向---redirect 方法
    #重定向到外部的百度地址,需要写完整地址
    return redirect("https://www.baidu.com")
    # 重定向到内部的地址,IP或域名及端口可以不用写,直接写接口名
    return redirect("http://127.0.0.1:8000/api/auth/")
    return redirect("http://127.0.0.1:8000/api/auth/")
    # 重定向的三种写法
    # 写法1,直接通过redirect 到接口名称
    return redirect("/api/auth/")
    # 写法2,通过reverse方法 通过路由name 返回一个URL,再通过redirect重定向到reverse返回的URL上
    from django.urls import reverse
    url = reverse("auth")
    return redirect(url)  # name
    # 写法3,直接redirect到路由的name 别名,不建议使用这种方法
    return redirect("auth")

    # 3.4 渲染--render 方法
    # - a.找到 'login.html' 并读取的内容,问题:去哪里找?
    # -   默认先去settings.TEMPLATES.DIRS指定的路径找。(公共)
    # -   按注册顺序每个已注册的app中找他templates目录,去这个目录中寻找'login.html'
    # -   一般情况下,原则,那个app中的的模板,去哪个那个app中寻找。
    # - b.渲染(替换)得到替换完成的字符串
    # - c.返回浏览器
    return render(request, 'api/login.html')

五、视图函数返回值的响应头和响应体

1、浏览器拿到返回值就将响应体渲染给到用户

2、给返回这设置响应头

用法,前后端分离的项目涉及到的token值的设定,cors跨越的问题

from django.shortcuts import HttpResponse, redirect, render
from django.http import JsonResponse


def login(request):
    res = HttpResponse("login")
    res['xx1'] = "hahaha"
    res['xx2'] = "hahaha"
    res['xx3'] = "hahaha"

    res.set_cookie('k1',"aaaaaaaa")
    res.set_cookie('k2',"bbbbbb")

    return res

六、FBV和CBV

1、FBV,视图用函数的形式编写。(目前主流)

2、CBV,视图用类的形式编写。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值