目录
from app01 import views url('^book/(?P<year>\d)/(?P<month>\d+)',views.book)
views.py
有名分组为关键字传参,与参数位置无关
'''request下的一些属性和方法''' def book(request,month,year): # 参数位置随意 request.GET 包含所有HTTP GET参数的类字典对象 <QueryDict: {}> request.POST 包含所有HTTP POST参数的类字典对象 <QueryDict: {}> request.method 请求中使用的HTTP方法的字符串表示 全大写表示 GET request.path 返回用户访问url 不包括域名 /book/2020/12 request.path_info 返回用户访问url 不包括域名 /book/2020/12 request.get_full_path() /book/2020/12 request.body 请求体,byte类型 request.POST的数据就是从body里面提取到的 b'' 在view中定义的视图函数,可以返回如下几种''' return HttpResponse(xxx') 一般后面加字符串 return render(request,book.htmltitle':xx'}) title这个名字随便起的,html文件会使用这个名字 return redirect(/index/ 重定向 后面接路径 可以修改HttpResponse对象相关的参数''' ret = HttpResponse( 这是一个HTTPResponse对象 ret['] = oo' 给对象加一个响应头键值对 ret.status_code = 201 设置一个状态码 return ret
request.get_full_path返回的是=>/class_list/?name=10
request.path获取的是不带参数的路径=>/class_list/
url(^book/(\d)/(\d+)
FBV(function base views) 就是在视图里使用函数处理请求
from django.http HttpResponse def my_view(request): if request.method == GET': OK')
CBV(class base views) 就是在视图里使用类处理请求
HttpResponse from django.views View class MyView(View): get(self,request): ')
url(
针对这个问题,class-based view提供了一个as_view()静态方法(也就是类方法)
调用这个方法,会创建一个类的实例,然后通过实例调用dispatch()方法
dispatch()方法会根据request的method的不同调用相应的方法来处理request(如get() ,post() 等)。
到这里,这些方法和FBV差不多了,要接收request,得到一个response返回。
如果方法没有定义,会抛出HttpResponseNotAllowed异常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。