• Django之视图层


    网页伪静态(小了解)

            将动态网页伪装成静态网页从而提升网页被搜索引擎收录的概率,将网址表现成一个具体的文件路径:

    1. path('index.thml',view.index)
    2. # 在路由层伪装成thml的文件

    ps:费劲心思不如RMB玩家

    视图函数之返回值

            在视图函数中必须掌握的三板斧用来返回数据:

    1. from django.shortcuts import render,HttpResponse,redirect
    2. # 需要提前导入

    " role="presentation" style="position: relative;">  HttpResponse:将字符串返回给浏览器

    1. def index(request):
    2. # 业务逻辑代码
    3. return HttpResponse("hello world")

    " role="presentation" style="position: relative;">  render:将数据填充进模板文件,最后把结果返回给浏览器

    1. def index(request):
    2. # 业务逻辑代码
    3. return render(request, "index.html", {'data':data})

    " role="presentation" style="position: relative;">  redirect:接受一个URL参数,表示跳转到指定的URL

    1. def index(request):
    2. # 业务逻辑代码
    3. return redirect("/index/")

    ps:通过底层源码可得视图函数必须返回一个HttpResponse对象

    视图函数之json数据格式

            json数据格式需要借助模块来操作,其用法与python中的json序列化差不多,json类型的数据是以建值对的结构:

    1. from django.http import JsonResponse
    2. user_dict = {'name':'a','pwd':123,'hobby':'read'}
    3. return JsonResponse(user_dict)

    form表单携带文件数据

            from表单上传文件method属性值必须是post,还得加上enctype属性其属性必须是multipart/form-data

    1. class='' action='' method='post' enctype='multipart/form-data'>
    2. # 后端接收数据
    3. request.FILES

    FBV与CBV

    1.FBV:

            基于函数的视图,在视图里使用函数来处理请求

    1. def index(request):
    2. if request.method =="GET":
    3. return HttpResponse('GET方法')
    4. if request.method =="POST":
    5. return HttpResponse('POST方法')

    2.CBV:

            基于类的视图,在视图里使用类处理请求

            定义的类要继承父类View所以第一步得先导库:

    from django.views import View

            在CBV中会自动设别不同的请求方式匹配类中对应的方法并自动执行

    1. from django import views
    2. class index(views.View):
    3. def get(self,request):
    4. return HttpResponse('get方法')
    5. def post(self,request):
    6. return HttpResponse('post方法')

            在路由层调用类时需要加上as_view()

    path('func/',views.index.as_view())

    3.CBV源码分析

    3.1:分析as_view底层代码逻辑

    3.2:继续研究dispatch方法

            通过dispatch对请求方法的判断并且在视图中也提前定义好了方法所以CBV能自动根据请求用不同的方法来处理                 

  • 相关阅读:
    缓存更新策略
    微信小程序开发14 复杂数据库设计:如何用好云开发提供的文档型数据库?
    图神经网络GNN
    Prometheus构建及Grafana操作展示
    商品销售系统实验报告总篇论文
    单例模式学习笔记
    telnet无效指令,telnet找不到命令
    9月最新外贸进出口数据出来了,外贸整体向好
    深度学习 | CNN卷积核与通道
    量子笔记:量子纠缠祛魅,贝尔纠缠态
  • 原文地址:https://blog.csdn.net/weixin_52596593/article/details/126664852