第三单元
1.GET请求的处理、POST请求的处理
get请求处理
在导航栏输入的地址:http://127.0.0.1:8000/get/?page=10&size=00
如果有多个参数中间用&间隔
# 1.先从导入HttpResponse请求
from django.http import HttpResponse
# 2.定义函数视图
def Getview(request):
# 解析GET参数 request请求带了GET元素,get提取数据,赋值给page1
page1 = request.GET.get('page')
size = request.GET.get('size')
# f格式化输出
return HttpResponse(f"解析get请求,page={page1}, # 返回简单的视图
# 3.配置路由 每次定义视图都需要
```python
from 子项目名 import views
urlpatterns = [
path('get/',views.Getview),]
post请求处理
# 1.导入
from django.shortcuts import render #导入render
# 2.表单视图页面
def FormView(request): # 获取表单页面 form.html
return render(request,'form.html') #返回页面视图
# 3.定义视图函数
def PostView(request): # 解析post请求
# 解析数据
user = request.POST.get('user')
pwd = request.POST.get('pwd')
return HttpResponse(f"解析post,user={user},pwd={pwd}") #简单的视图函数
# 4.配置路由 每次定义视图都需要
from 子项目名 import views
urlpatterns = [
path('form/',views.FormView),
path('post/',views.PostView),
]
视图页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title >Title</title>
</head>
<body>
<h3>表单页面</h3>
{# action :请求地址 methd:请求方式 #}
{# 从根路径开始夹=加/ #}
<form action="/post/" method="post">
{# crsf错误 #}
{% csrf_token %}
账号:<input type="text" name="user">
密码:<input type="password" name="pwd">
<input type="submit" value="提交">
</form>
</body>
</html>
2.视图响应HTTPResponse、render、重定向概念及redirect
HTTPResponse
返回简单的字符串
# 导入,定义视图,配置路由
from django.http import HttpResponse
def myapp(request):
return HttpResponse("简单字符串")
render
返回视图页面(templates里的:html文件)
from django.shortcuts import render
def MyView(request):
return render(request,'index.html')
# 返回一个可渲染 HTML 页面
重定向
# 1.导入
from django.shortcuts import redirect # 导入重定向
# 2.定义两个视图
def RedirectViews1(request):
# 返回响应
return HttpResponse("奶茶开门了了,可以买到")
def RedirectViews2(request):
print('没开门,去另一个')
return redirect('/red1/')
# 3.配置路由
from zi import views
urlpatterns = [
path('red1/',views.RedirectViews1),
path('red2/',views.RedirectViews2),
]
3.类视图CBV
需要借助其他的工具来体现
# 类视图
from django.views import View # 导入视图
class CbvView(View):
def get(self,request):
return HttpResponse("GET请求处理")
def post(self,request):
return HttpResponse('POST请求')
def put(self,request):
return HttpResponse('PUT请求')
def delete(self,request):
return HttpResponse('DELETE请求')
# 导包
urlpatterns = [
path('cbv/',views.CbvView.as_view())
]