持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情 本文已参与「新人创作礼」活动,一 起开启掘金创作之路。
路由
URL
- 表示互联网上资源的地址
utls.py
- 访问服务时依次匹配
urlpatterns中的所有路由,返回匹配到的路由 path('admin/', admin.site.urls)第一个参数是路由名,第二个是视图函数
视图函数
-
视图函数类似与springboot中的注解一样(就是那个写在方法头上面的@)
-
用于接收浏览器
HttpRequest请求,并通过HttpResponse对象返回响应的函数 -
语法:
def xxx_view(request[其他参数...]): return HttpResponse对象 -
样例
from django.http import HttpResponse def test1(request): html = '<h1>hello world</h>' return HttpResponse(html)然后在urls.py中添加路由
path('test1/', views.test1)
路由配置
path()
- 导入 -
from django.urls import path - 语法 -
path(route,views,name=None) - 参数:
route:字符串类型,匹配的请求路径views:指定的路径所对应的视图处理函数的名称name:为地址起别名,在模板中地址反向解析时使用
path转换器
- 将路由中的参数传递到视图函数
- 语法:
- 主路由中:
path('test2/<int:pg>', views.test2) - 视图函数:
def test2(request, pg): html = '<h1>%s</h>'%(pg) return HttpResponse(html)
test2/<int:pg>的路由,例如test2/1、test2/2等等 - 主路由中:
- 注:匹配路由是是从上往下匹配,匹配到就结束匹配
re_path()
- 在url匹配时用正则表达式进行精确匹配
- 语法:
re_path(reg, view, name=xxx)(?P<name>pattern),提取参数后传入视图函数
- 样例:
- 可匹配:localhost:8080/20/mul/40
- 不可匹配:localhost:8080/200/mul/400
- 添加路由:
re_path(r'^test3/(?P<x>\d{1,2})/(?P<op>\w+)/(?P<y>\d{1,2})$', views.test3) - 视图函数:
def test3(request, x, op, y): html = '<h1>%s%s%s</h>'%(x, op , y) return HttpResponse(html)
请求和响应
请求方法
- http1.0:get, post, head
- http1.1:put, options, delete, trace, connect
request
path_info:URL字符串method:字符串,表示HTTP请求方法GET:QueryDict查询字典对象POST:QueryDict查询字典的对象,包含post请求方式的所有数据FILES:类似于字典的对象,包含所有上传文件的信息COOKIES:python字典,包含所有cookie,键和值都时字符串session:类似字典的对象,表示当前的会话body:字符串,请求体内容scheme:请求协议('http'/'https')get_full_path():请求的完整数据META:请求头的元数据
GET处理
- 示例:
request.GET['参数名']request.GET.get('参数名','默认值'),没有参数时,返回默认值request.GET.getlist('参数名')
POST处理
- 示例:
request.POST['参数名']request.POST.get('参数名','默认值'),没有参数时,返回默认值request.POST.getlist('参数名')