当前位置:网站首页>第三单元 视图层
第三单元 视图层
2022-08-02 14:02:00 【czy1206527605】
视图请求
特点
视图函数一般用来接收一个Web请求HttpRequest,
之后返回一个Web响应HttpResponse
组成
- get
- post
<注意>
GET一般用于获取/查询资源信息,
而POST一般用于更新资源信息
get,post请求处理
—需要的导包 from django.http import HttpResponse
解析get请求
def MyView(request):
page = request.GET.get('page')
id = request.GET.get('id')
return HttpResponse(f'这是第一个视图,当前的页数为{page},id为{id}')
解析post请求
def MyView2(request):
user = request.POST.get('user')
pwd = request.POST.get('pwd')
return HttpResponse(f"这是第二个视图,账号{user},密码{pwd}")
返回带有表单的页面
在post基础上使用
def IndexView(request):
return render(request,'index.html')
在templates里创建index.html,在里面创建表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>表单页面</h3>
<form method="post" action="/myview2/">
{% csrf_token %}
账号:<input type="text" name="user">
密码:<input type="password" name="pwd">
<input type="submit" value="提交">
</form>
</body>
</html>
重定向redirect
使用前必须导入模块:
from django.shortcuts import render,redirect
类似于vuex里面的页面跳转,一般用于试图代码中
CBV实例运用
FBV一般是通过函数直接定义的,而CBV是将多种不同功能的函数整合到类中,来进行编写视图的功能。
class RegisterView(View):
def get(self,request):
return render(request,'register.html')
def post(self,request): <2>
user1 = request.POST.get('user')
pwd1 = request.POST.get('pwd')
try:
Users.objects.create(user=user1,pwd=pwd1)
except Exception as e:
print(e)
return HttpResponse("注册失败")
return redirect('/login/') <1>
class LoginView(View):
def get(self,request):
return render(request,'login.html')
def post(self,request): <2>
user1 = request.POST.get('user')
pwd1 = request.POST.get('pwd')
try:
user_data = Users.objects.get(user=user1)
except Exception as e:
print(e)
return HttpResponse("账号密码不存在")
if pwd1 == user_data.pwd:
return redirect('/index/') <1>
else:
return HttpResponse('密码错误')
class IndexView(View):
def get(self,request):
return render(request,'index.html')
PS:
<1> 运用重定向
<2>运用post和get发出请求以保存或提取账号密码。
CBV使用注意
- 对应路由此时设置为,需要使用试图类的as_view()函数进行实例化
- 类中函数必须为小写
边栏推荐
猜你喜欢
随机推荐
The world's largest Apache open source foundation is how it works?
网络安全第一次作业(2)
idea社区版下载安装教程_安装天然气管道的流程
Flask框架深入一
Tornado框架路由系统介绍及(IOloop.current().start())启动源码分析
Swagger 的使用
你接受不了60%的暴跌,就没有资格获得6000%的涨幅 2021-05-27
Flask框架深入二
hsql是什么_MQL语言
RKMPP 在FFmpeg上实现硬编解码
2022-08-02日报:2022年7月最热的10篇AI论文
WeChat Mini Program-Recent Dynamic Scrolling Implementation
The most complete ever!A collection of 47 common terms of "digital transformation", read it in seconds~
为什么四个字节的float表示的范围比八个字节的long要广
binary search && tree
CVE-2020-27986(Sonarqube敏感信息泄漏) 漏洞修复
关于Google词向量模型(googlenews-vectors-negative300.bin)的导入问题
els 长条方块变形条件、边界碰撞判定
Sentinel源码(一)SentinelResourceAspect
关于市场后市的发展预测? 2021-05-23