网页伪静态(小了解)
将动态网页伪装成静态网页从而提升网页被搜索引擎收录的概率,将网址表现成一个具体的文件路径:
path('index.thml',view.index) # 在路由层伪装成thml的文件
ps:费劲心思不如RMB玩家
视图函数之返回值
在视图函数中必须掌握的三板斧用来返回数据:
from django.shortcuts import render,HttpResponse,redirect # 需要提前导入
HttpResponse:将字符串返回给浏览器
def index(request): # 业务逻辑代码 return HttpResponse("hello world")
render:将数据填充进模板文件,最后把结果返回给浏览器
def index(request): # 业务逻辑代码 return render(request, "index.html", {'data':data})
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能自动根据请求用不同的方法来处理