Django之视图层

本文介绍了如何通过伪静态技术伪装动态网页,展示视图函数的返回技巧,涉及HttpResponse、render和redirect,以及json数据格式处理。同时涵盖了form表单文件上传和FBV/CBV的区别,深入解析了基于类的视图(CBV)的工作原理。
摘要由CSDN通过智能技术生成

网页伪静态(小了解)

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

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

ps:费劲心思不如RMB玩家

视图函数之返回值

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

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

\bullet  HttpResponse:将字符串返回给浏览器

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

\bullet  render:将数据填充进模板文件,最后把结果返回给浏览器

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

\bullet  redirect:接受一个URL参数,表示跳转到指定的URL

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

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

视图函数之json数据格式

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

from django.http import JsonResponse

user_dict = {'name':'a','pwd':123,'hobby':'read'}
return JsonResponse(user_dict)

form表单携带文件数据

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

<form class='' action='' method='post' enctype='multipart/form-data'>

# 后端接收数据
request.FILES

FBV与CBV

1.FBV:

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

def index(request):
    if request.method =="GET":
        return HttpResponse('GET方法')
    if request.method =="POST":
        return HttpResponse('POST方法')

2.CBV:

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

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

from django.views import View

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

from django import views
class index(views.View):
    def get(self,request):
        return HttpResponse('get方法')
    def post(self,request):
        return HttpResponse('post方法')

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

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

3.CBV源码分析

3.1:分析as_view底层代码逻辑

3.2:继续研究dispatch方法

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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值